From 767693caf2b41c2e857688d10d2c71bc77c0bbad Mon Sep 17 00:00:00 2001 From: Chip Black Date: Sun, 2 Jun 2013 19:25:35 -0500 Subject: [PATCH] Add support for "muting" accounts Muted accounts do not update reference or subscription indexes, making them effectively invisible, but unaware of the fact. --- database/database.c | 23 ++++++++++++++++++++--- database/database.h | 5 +++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/database/database.c b/database/database.c index c8b9b58..618c0d3 100644 --- a/database/database.c +++ b/database/database.c @@ -283,9 +283,11 @@ int blerg_store(struct blerg *blerg, const char *data, int len) { flock(blerg->data_fd, LOCK_UN); flock(blerg->index_fd, LOCK_UN); - /* Now do those dirty microblogging deeds */ - tag_scan(blerg->name, data, len, record); - subscription_notify(blerg->name, record); + if (!blerg_get_mute(blerg)) { + /* Now do those dirty microblogging deeds */ + tag_scan(blerg->name, data, len, record); + subscription_notify(blerg->name, record); + } return record; } @@ -368,3 +370,18 @@ uint64_t blerg_get_subscription_mark(struct blerg *blerg) { CHECK_VALID_BLERG(0) return blerg->meta->subscription_mark; } + +int blerg_set_mute(struct blerg *blerg, int v) { + CHECK_VALID_BLERG(0) + if (v) { + blerg->meta->status |= BLERGMETA_MUTED; + } else { + blerg->meta->status &= ~BLERGMETA_MUTED; + } + return 1; +} + +int blerg_get_mute(struct blerg *blerg) { + CHECK_VALID_BLERG(0) + return (blerg->meta->status & BLERGMETA_MUTED) > 0; +} diff --git a/database/database.h b/database/database.h index 412d6c7..aa2403a 100644 --- a/database/database.h +++ b/database/database.h @@ -20,8 +20,11 @@ struct record { struct meta { uint64_t sequence; uint64_t subscription_mark; + uint32_t status; }; +#define BLERGMETA_MUTED 0x00000001 + struct blerg { int meta_fd; int index_fd; @@ -44,5 +47,7 @@ uint64_t blerg_get_record_count(struct blerg *); time_t blerg_get_timestamp(struct blerg *blerg, int record); int blerg_set_subscription_mark(struct blerg *blerg); uint64_t blerg_get_subscription_mark(struct blerg *blerg); +int blerg_set_mute(struct blerg *blerg, int v); +int blerg_get_mute(struct blerg *blerg); #endif //_DATABASE_H -- 2.25.1