diff options
Diffstat (limited to '')
-rw-r--r-- | src/replication/replication-common.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/replication/replication-common.h b/src/replication/replication-common.h new file mode 100644 index 0000000..77f711c --- /dev/null +++ b/src/replication/replication-common.h @@ -0,0 +1,48 @@ +#ifndef REPLICATION_COMMON_H +#define REPLICATION_COMMON_H + +enum replication_priority { + /* user is fully replicated, as far as we know */ + REPLICATION_PRIORITY_NONE = 0, + /* flag changes, expunges, etc. */ + REPLICATION_PRIORITY_LOW, + /* new emails */ + REPLICATION_PRIORITY_HIGH, + /* synchronously wait for new emails to be replicated */ + REPLICATION_PRIORITY_SYNC +}; + +static inline const char * +replicator_priority_to_str(enum replication_priority priority) +{ + switch (priority) { + case REPLICATION_PRIORITY_NONE: + return "none"; + case REPLICATION_PRIORITY_LOW: + return "low"; + case REPLICATION_PRIORITY_HIGH: + return "high"; + case REPLICATION_PRIORITY_SYNC: + return "sync"; + } + i_unreached(); +} + +static inline int +replication_priority_parse(const char *str, + enum replication_priority *priority_r) +{ + if (strcmp(str, "none") == 0) + *priority_r = REPLICATION_PRIORITY_NONE; + else if (strcmp(str, "low") == 0) + *priority_r = REPLICATION_PRIORITY_LOW; + else if (strcmp(str, "high") == 0) + *priority_r = REPLICATION_PRIORITY_HIGH; + else if (strcmp(str, "sync") == 0) + *priority_r = REPLICATION_PRIORITY_SYNC; + else + return -1; + return 0; +} + +#endif |