Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00014 #ifndef __GEARMAN_PACKET_H__
00015 #define __GEARMAN_PACKET_H__
00016
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020
00033 enum gearman_magic_t
00034 {
00035 GEARMAN_MAGIC_TEXT,
00036 GEARMAN_MAGIC_REQUEST,
00037 GEARMAN_MAGIC_RESPONSE
00038 };
00039
00043 struct gearman_packet_st
00044 {
00045 struct {
00046 bool allocated LIBGEARMAN_BITFIELD;
00047 bool complete LIBGEARMAN_BITFIELD;
00048 bool free_data LIBGEARMAN_BITFIELD;
00049 } options;
00050 enum gearman_magic_t magic;
00051 gearman_command_t command;
00052 uint8_t argc;
00053 size_t args_size;
00054 size_t data_size;
00055 gearman_universal_st *universal;
00056 gearman_packet_st *next;
00057 gearman_packet_st *prev;
00058 char *args;
00059 const void *data;
00060 char *arg[GEARMAN_MAX_COMMAND_ARGS];
00061 size_t arg_size[GEARMAN_MAX_COMMAND_ARGS];
00062 char args_buffer[GEARMAN_ARGS_BUFFER_SIZE];
00063 };
00064
00065 #ifdef GEARMAN_CORE
00066
00070 extern GEARMAN_INTERNAL_API
00071 gearman_command_info_st gearman_command_info_list[GEARMAN_COMMAND_MAX];
00072
00073
00083 GEARMAN_INTERNAL_API
00084 gearman_packet_st *gearman_packet_create(gearman_universal_st *gearman,
00085 gearman_packet_st *packet);
00086
00093 GEARMAN_INTERNAL_API
00094 void gearman_packet_free(gearman_packet_st *packet);
00095
00126 GEARMAN_INTERNAL_API
00127 gearman_return_t gearman_packet_create_args(gearman_universal_st *gearman,
00128 gearman_packet_st *packet,
00129 enum gearman_magic_t magic,
00130 gearman_command_t command,
00131 const void *args[],
00132 const size_t args_size[],
00133 size_t args_count);
00134
00138 GEARMAN_INTERNAL_API
00139 gearman_return_t gearman_packet_create_arg(gearman_packet_st *packet,
00140 const void *arg, size_t arg_size);
00141
00145 GEARMAN_INTERNAL_API
00146 gearman_return_t gearman_packet_pack_header(gearman_packet_st *packet);
00147
00151 GEARMAN_INTERNAL_API
00152 gearman_return_t gearman_packet_unpack_header(gearman_packet_st *packet);
00153
00157 GEARMAN_INTERNAL_API
00158 size_t gearman_packet_pack(const gearman_packet_st *packet, gearman_connection_st *con,
00159 void *data, size_t data_size,
00160 gearman_return_t *ret_ptr);
00161
00165 GEARMAN_INTERNAL_API
00166 size_t gearman_packet_unpack(gearman_packet_st *packet, gearman_connection_st *con,
00167 const void *data, size_t data_size,
00168 gearman_return_t *ret_ptr);
00169
00174 GEARMAN_INTERNAL_API
00175 void gearman_packet_give_data(gearman_packet_st *packet, const void *data,
00176 size_t data_size);
00177
00182 GEARMAN_INTERNAL_API
00183 void *gearman_packet_take_data(gearman_packet_st *packet, size_t *data_size);
00184
00185 #endif
00186
00189 #ifdef __cplusplus
00190 }
00191 #endif
00192
00193 #endif