447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen#ifndef REPLICATION_COMMON_H
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen#define REPLICATION_COMMON_H
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenenum replication_priority {
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* user is fully replicated, as far as we know */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen REPLICATION_PRIORITY_NONE = 0,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* flag changes, expunges, etc. */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen REPLICATION_PRIORITY_LOW,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* new emails */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen REPLICATION_PRIORITY_HIGH,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* synchronously wait for new emails to be replicated */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen REPLICATION_PRIORITY_SYNC
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen};
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainenstatic inline const char *
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainenreplicator_priority_to_str(enum replication_priority priority)
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen{
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen switch (priority) {
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen case REPLICATION_PRIORITY_NONE:
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen return "none";
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen case REPLICATION_PRIORITY_LOW:
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen return "low";
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen case REPLICATION_PRIORITY_HIGH:
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen return "high";
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen case REPLICATION_PRIORITY_SYNC:
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen return "sync";
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen }
faccb8e5140fb59650f1655a43f7cc58456bc294Timo Sirainen i_unreached();
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen}
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenstatic inline int
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenreplication_priority_parse(const char *str,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen enum replication_priority *priority_r)
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen{
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen if (strcmp(str, "none") == 0)
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen *priority_r = REPLICATION_PRIORITY_NONE;
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen else if (strcmp(str, "low") == 0)
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen *priority_r = REPLICATION_PRIORITY_LOW;
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen else if (strcmp(str, "high") == 0)
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen *priority_r = REPLICATION_PRIORITY_HIGH;
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen else if (strcmp(str, "sync") == 0)
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen *priority_r = REPLICATION_PRIORITY_SYNC;
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen else
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen return -1;
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen return 0;
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen}
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen#endif