imap-fetch.h revision 704a96fa677763eef7ae62466e14e83a2f535427
8e371a3ce32bd64288786855b8ce0cb63f19f7d1Timo Sirainen/* Returns 1 = ok, 0 = client output buffer full, call again, -1 = error.
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen mail = NULL for deinit. */
8c909e451d14075c05d90382cf8eebc4e354f569Timo Sirainentypedef int imap_fetch_handler_t(struct imap_fetch_context *ctx,
8e371a3ce32bd64288786855b8ce0cb63f19f7d1Timo Sirainen /* Returns FALSE and sets ctx->error if arg is invalid */
8e371a3ce32bd64288786855b8ce0cb63f19f7d1Timo Sirainen bool (*init)(struct imap_fetch_init_context *ctx);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen const ARRAY_TYPE(uint32_t) *qresync_sample_seqset;
1d2b188f0eedc3cab6e27ceac5425a037f38042eTimo Sirainen const ARRAY_TYPE(uint32_t) *qresync_sample_uidset;
563273bdac80393af63b9520cbf4d24cc0efd028Timo Sirainen int (*cont_handler)(struct imap_fetch_context *ctx);
291ce16fffca75e8598a8c9dceb08613413dcb07Timo Sirainen ARRAY(struct imap_fetch_context_handler) handlers;
306b3f41b05da642d87e7ca7a1496efce9f5902fTimo Sirainenvoid imap_fetch_handlers_register(const struct imap_fetch_handler *handlers,
306b3f41b05da642d87e7ca7a1496efce9f5902fTimo Sirainenvoid imap_fetch_add_handler(struct imap_fetch_init_context *ctx,
97ae33602db7d5bc8eede82512a965d49ab8853bTimo Sirainen#define imap_fetch_add_handler(ctx, flags, nil_reply, handler, context) \
fdc557286bc9f92c5f3bb49096ff6e2bcec0ea79Timo Sirainen imap_fetch_add_handler(ctx, flags, nil_reply + \
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenint imap_fetch_att_list_parse(struct client *client, pool_t pool,
420040a5930a2b497e79ff0b5f59ba4b764a5b39Timo Sirainen const char **error_r);
420040a5930a2b497e79ff0b5f59ba4b764a5b39Timo Sirainenimap_fetch_alloc(struct client *client, pool_t pool);
420040a5930a2b497e79ff0b5f59ba4b764a5b39Timo Sirainenvoid imap_fetch_free(struct imap_fetch_context **ctx);
420040a5930a2b497e79ff0b5f59ba4b764a5b39Timo Sirainenbool imap_fetch_init_handler(struct imap_fetch_init_context *init_ctx);
eecb235c14b49c01774134ea593c266f2d2c2be1Timo Sirainenvoid imap_fetch_init_nofail_handler(struct imap_fetch_context *ctx,
eecb235c14b49c01774134ea593c266f2d2c2be1Timo Sirainen bool (*init)(struct imap_fetch_init_context *));
7900eb30bac4a46b259522c58362884661483d7cJosef 'Jeff' Sipekvoid imap_fetch_begin(struct imap_fetch_context *ctx, struct mailbox *box,
fdc557286bc9f92c5f3bb49096ff6e2bcec0ea79Timo Sirainenint imap_fetch_send_vanished(struct client *client, struct mailbox *box,
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen const struct imap_fetch_qresync_args *qresync_args);
97ae33602db7d5bc8eede82512a965d49ab8853bTimo Sirainen/* Returns 1 if finished, 0 if more data is needed, -1 if error.
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen When 0 is returned, line_partial=TRUE if literal is open and must be
f1743785713e7632459d623d5df2108f4b93accbTimo Sirainen finished before anything else to client. */
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenint imap_fetch_more(struct imap_fetch_context *ctx,
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen/* Like imap_fetch_more(), but don't check/update output_lock.
ccc895c0358108d2304239063e940b7d75f364abTimo Sirainen The caller must handle this itself. */
8d630c15a8ed6f85553467c3a231a273defca5f6Timo Sirainenint imap_fetch_more_no_lock_update(struct imap_fetch_context *ctx);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenint imap_fetch_end(struct imap_fetch_context *ctx);
ee116df08d0fdab703483e18fe8076b2ef9fd9d7Timo Sirainenint imap_fetch_more(struct imap_fetch_context *ctx,
306b3f41b05da642d87e7ca7a1496efce9f5902fTimo Sirainenbool imap_fetch_flags_init(struct imap_fetch_init_context *ctx);
9fd2181788a61500641c66aec0f8c746b19bf830Timo Sirainenbool imap_fetch_modseq_init(struct imap_fetch_init_context *ctx);
9fd2181788a61500641c66aec0f8c746b19bf830Timo Sirainenbool imap_fetch_uid_init(struct imap_fetch_init_context *ctx);
306b3f41b05da642d87e7ca7a1496efce9f5902fTimo Sirainenbool imap_fetch_body_section_init(struct imap_fetch_init_context *ctx);
fdc557286bc9f92c5f3bb49096ff6e2bcec0ea79Timo Sirainenbool imap_fetch_rfc822_init(struct imap_fetch_init_context *ctx);