/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: proto/mercury.proto */

#ifndef PROTOBUF_C_proto_2fmercury_2eproto__INCLUDED
#define PROTOBUF_C_proto_2fmercury_2eproto__INCLUDED

#include <protobuf-c/protobuf-c.h>

PROTOBUF_C__BEGIN_DECLS

#if PROTOBUF_C_VERSION_NUMBER < 1000000
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
#endif


typedef struct _MercuryMultiGetRequest MercuryMultiGetRequest;
typedef struct _MercuryMultiGetReply MercuryMultiGetReply;
typedef struct _MercuryRequest MercuryRequest;
typedef struct _MercuryReply MercuryReply;
typedef struct _Header Header;
typedef struct _UserField UserField;


/* --- enums --- */

typedef enum _MercuryReply__CachePolicy {
  MERCURY_REPLY__CACHE_POLICY__CACHE_NO = 1,
  MERCURY_REPLY__CACHE_POLICY__CACHE_PRIVATE = 2,
  MERCURY_REPLY__CACHE_POLICY__CACHE_PUBLIC = 3
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(MERCURY_REPLY__CACHE_POLICY)
} MercuryReply__CachePolicy;

/* --- messages --- */

struct  _MercuryMultiGetRequest
{
  ProtobufCMessage base;
  size_t n_request;
  MercuryRequest **request;
};
#define MERCURY_MULTI_GET_REQUEST__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&mercury_multi_get_request__descriptor) \
    , 0,NULL }


struct  _MercuryMultiGetReply
{
  ProtobufCMessage base;
  size_t n_reply;
  MercuryReply **reply;
};
#define MERCURY_MULTI_GET_REPLY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&mercury_multi_get_reply__descriptor) \
    , 0,NULL }


struct  _MercuryRequest
{
  ProtobufCMessage base;
  char *uri;
  char *content_type;
  protobuf_c_boolean has_body;
  ProtobufCBinaryData body;
  protobuf_c_boolean has_etag;
  ProtobufCBinaryData etag;
};
#define MERCURY_REQUEST__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&mercury_request__descriptor) \
    , NULL, NULL, 0, {0,NULL}, 0, {0,NULL} }


struct  _MercuryReply
{
  ProtobufCMessage base;
  protobuf_c_boolean has_status_code;
  int32_t status_code;
  char *status_message;
  protobuf_c_boolean has_cache_policy;
  MercuryReply__CachePolicy cache_policy;
  protobuf_c_boolean has_ttl;
  int32_t ttl;
  protobuf_c_boolean has_etag;
  ProtobufCBinaryData etag;
  char *content_type;
  protobuf_c_boolean has_body;
  ProtobufCBinaryData body;
};
#define MERCURY_REPLY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&mercury_reply__descriptor) \
    , 0, 0, NULL, 0, MERCURY_REPLY__CACHE_POLICY__CACHE_NO, 0, 0, 0, {0,NULL}, NULL, 0, {0,NULL} }


struct  _Header
{
  ProtobufCMessage base;
  char *uri;
  char *content_type;
  char *method;
  protobuf_c_boolean has_status_code;
  int32_t status_code;
  size_t n_user_fields;
  UserField **user_fields;
};
#define HEADER__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&header__descriptor) \
    , NULL, NULL, NULL, 0, 0, 0,NULL }


struct  _UserField
{
  ProtobufCMessage base;
  char *key;
  protobuf_c_boolean has_value;
  ProtobufCBinaryData value;
};
#define USER_FIELD__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&user_field__descriptor) \
    , NULL, 0, {0,NULL} }


/* MercuryMultiGetRequest methods */
void   mercury_multi_get_request__init
                     (MercuryMultiGetRequest         *message);
size_t mercury_multi_get_request__get_packed_size
                     (const MercuryMultiGetRequest   *message);
size_t mercury_multi_get_request__pack
                     (const MercuryMultiGetRequest   *message,
                      uint8_t             *out);
size_t mercury_multi_get_request__pack_to_buffer
                     (const MercuryMultiGetRequest   *message,
                      ProtobufCBuffer     *buffer);
MercuryMultiGetRequest *
       mercury_multi_get_request__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   mercury_multi_get_request__free_unpacked
                     (MercuryMultiGetRequest *message,
                      ProtobufCAllocator *allocator);
/* MercuryMultiGetReply methods */
void   mercury_multi_get_reply__init
                     (MercuryMultiGetReply         *message);
size_t mercury_multi_get_reply__get_packed_size
                     (const MercuryMultiGetReply   *message);
size_t mercury_multi_get_reply__pack
                     (const MercuryMultiGetReply   *message,
                      uint8_t             *out);
size_t mercury_multi_get_reply__pack_to_buffer
                     (const MercuryMultiGetReply   *message,
                      ProtobufCBuffer     *buffer);
MercuryMultiGetReply *
       mercury_multi_get_reply__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   mercury_multi_get_reply__free_unpacked
                     (MercuryMultiGetReply *message,
                      ProtobufCAllocator *allocator);
/* MercuryRequest methods */
void   mercury_request__init
                     (MercuryRequest         *message);
size_t mercury_request__get_packed_size
                     (const MercuryRequest   *message);
size_t mercury_request__pack
                     (const MercuryRequest   *message,
                      uint8_t             *out);
size_t mercury_request__pack_to_buffer
                     (const MercuryRequest   *message,
                      ProtobufCBuffer     *buffer);
MercuryRequest *
       mercury_request__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   mercury_request__free_unpacked
                     (MercuryRequest *message,
                      ProtobufCAllocator *allocator);
/* MercuryReply methods */
void   mercury_reply__init
                     (MercuryReply         *message);
size_t mercury_reply__get_packed_size
                     (const MercuryReply   *message);
size_t mercury_reply__pack
                     (const MercuryReply   *message,
                      uint8_t             *out);
size_t mercury_reply__pack_to_buffer
                     (const MercuryReply   *message,
                      ProtobufCBuffer     *buffer);
MercuryReply *
       mercury_reply__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   mercury_reply__free_unpacked
                     (MercuryReply *message,
                      ProtobufCAllocator *allocator);
/* Header methods */
void   header__init
                     (Header         *message);
size_t header__get_packed_size
                     (const Header   *message);
size_t header__pack
                     (const Header   *message,
                      uint8_t             *out);
size_t header__pack_to_buffer
                     (const Header   *message,
                      ProtobufCBuffer     *buffer);
Header *
       header__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   header__free_unpacked
                     (Header *message,
                      ProtobufCAllocator *allocator);
/* UserField methods */
void   user_field__init
                     (UserField         *message);
size_t user_field__get_packed_size
                     (const UserField   *message);
size_t user_field__pack
                     (const UserField   *message,
                      uint8_t             *out);
size_t user_field__pack_to_buffer
                     (const UserField   *message,
                      ProtobufCBuffer     *buffer);
UserField *
       user_field__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   user_field__free_unpacked
                     (UserField *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*MercuryMultiGetRequest_Closure)
                 (const MercuryMultiGetRequest *message,
                  void *closure_data);
typedef void (*MercuryMultiGetReply_Closure)
                 (const MercuryMultiGetReply *message,
                  void *closure_data);
typedef void (*MercuryRequest_Closure)
                 (const MercuryRequest *message,
                  void *closure_data);
typedef void (*MercuryReply_Closure)
                 (const MercuryReply *message,
                  void *closure_data);
typedef void (*Header_Closure)
                 (const Header *message,
                  void *closure_data);
typedef void (*UserField_Closure)
                 (const UserField *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCMessageDescriptor mercury_multi_get_request__descriptor;
extern const ProtobufCMessageDescriptor mercury_multi_get_reply__descriptor;
extern const ProtobufCMessageDescriptor mercury_request__descriptor;
extern const ProtobufCMessageDescriptor mercury_reply__descriptor;
extern const ProtobufCEnumDescriptor    mercury_reply__cache_policy__descriptor;
extern const ProtobufCMessageDescriptor header__descriptor;
extern const ProtobufCMessageDescriptor user_field__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_proto_2fmercury_2eproto__INCLUDED */
