7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainenint dsync_deserializer_init(const char *name, const char *const *required_fields,
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainen const char **error_r);
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainenvoid dsync_deserializer_deinit(struct dsync_deserializer **deserializer);
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainenint dsync_deserializer_decode_begin(struct dsync_deserializer *deserializer,
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainen struct dsync_deserializer_decoder **decoder_r,
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainen const char **error_r);
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainenbool dsync_deserializer_decode_try(struct dsync_deserializer_decoder *decoder,
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainen/* key must be in required fields. The return value is never NULL. */
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainendsync_deserializer_decode_get(struct dsync_deserializer_decoder *decoder,
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainen const char *key);
7bd5b1c64cc987715bdaf8cc4907c3c37d5d7b29Timo Sirainendsync_deserializer_decoder_get_name(struct dsync_deserializer_decoder *decoder);