replicator-queue.h revision 99a9e14caaf54d884dac6a520111cfc8849d8323
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen /* dsync state for incremental syncing */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* last time this user's state was updated */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* last_fast_run is always >= last_full_run. */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* User isn't currently in replication queue */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen /* Last replication sync failed */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainentypedef void replicator_sync_callback_t(bool success, void *context);
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenstruct replicator_queue *replicator_queue_init(unsigned int full_sync_interval);
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenvoid replicator_queue_deinit(struct replicator_queue **queue);
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen/* Call the specified callback when data is added/removed/moved in queue
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen via _add(), _add_sync() or _remove() functions (not push/pop). */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenvoid replicator_queue_set_change_callback(struct replicator_queue *queue,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen/* Add a user to queue and return it. If the user already exists, it's updated
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen only if the new priority is higher. */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenreplicator_queue_add(struct replicator_queue *queue, const char *username,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenvoid replicator_queue_add_sync(struct replicator_queue *queue,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen/* Remove user from replication queue and free it. */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenvoid replicator_queue_remove(struct replicator_queue *queue,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen/* Return the next user from replication queue, and remove it from the queue.
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen If there's nothing to be replicated currently, returns NULL and sets
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen next_secs_r to when there should be more work to do. */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenreplicator_queue_pop(struct replicator_queue *queue,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen unsigned int *next_secs_r);
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainen/* Add user back to queue. */
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenvoid replicator_queue_push(struct replicator_queue *queue,
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenint replicator_queue_import(struct replicator_queue *queue, const char *path);
447e086422f1ab7cc16833583ed70a4af7a84bc5Timo Sirainenint replicator_queue_export(struct replicator_queue *queue, const char *path);
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen/* Returns an (unsorted) array of all users in the queue. */
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainenreplicator_queue_get_users(struct replicator_queue *queue,
99a9e14caaf54d884dac6a520111cfc8849d8323Timo Sirainen unsigned int *count_r);