- rename MYSQLND_NET to MYSQLND_PPEC (protocol packet envelope codec).
PPEC does only the encoding and decoding to the protocol frame.
conn->m->free_options(conn);
if (conn->net) {
- mysqlnd_net_free(conn->net, conn->stats, conn->error_info);
+ mysqlnd_ppec_free(conn->net, conn->stats, conn->error_info);
conn->net = NULL;
}
static unsigned int
MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int mysql_flags)
{
- MYSQLND_NET * net = conn->net;
+ MYSQLND_PPEC * net = conn->net;
MYSQLND_VIO * vio = conn->vio;
DBG_ENTER("mysqlnd_conn_data::get_updated_connect_flags");
zend_bool reconnect = FALSE;
zend_bool saved_compression = FALSE;
zend_bool local_tx_started = FALSE;
- MYSQLND_NET * net = conn->net;
+ MYSQLND_PPEC * net = conn->net;
MYSQLND_STRING transport = { NULL, 0 };
-// char * transport = NULL;
-// int transport_len;
DBG_ENTER("mysqlnd_conn_data::connect");
DBG_INF_FMT("conn=%p", conn);
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options,
- const MYSQLND_NET_OPTIONS * const io_options,
+ const MYSQLND_PPEC_OPTIONS * const ppec_options,
zend_ulong mysql_flags
)
{
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options,
- const MYSQLND_NET_OPTIONS * const io_options,
+ const MYSQLND_PPEC_OPTIONS * const ppec_options,
zend_ulong mysql_flags
)
{
static RSA *
mysqlnd_sha256_get_rsa_key(MYSQLND_CONN_DATA * conn,
const MYSQLND_SESSION_OPTIONS * const session_options,
- const MYSQLND_NET_OPTIONS * const io_options
+ const MYSQLND_PPEC_OPTIONS * const io_options
)
{
RSA * ret = NULL;
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options,
- const MYSQLND_NET_OPTIONS * const io_options,
+ const MYSQLND_PPEC_OPTIONS * const ppec_options,
zend_ulong mysql_flags
)
{
memcpy(ret, passwd, passwd_len);
} else {
*auth_data_len = 0;
- server_public_key = mysqlnd_sha256_get_rsa_key(conn, session_options, io_options);
+ server_public_key = mysqlnd_sha256_get_rsa_key(conn, session_options, ppec_options);
if (server_public_key) {
int server_public_key_len;
mysqlnd_stats_init(&data->stats, STAT_LAST, persistent);
- data->net = mysqlnd_net_init(persistent, data->stats, data->error_info);
+ data->net = mysqlnd_ppec_init(persistent, data->stats, data->error_info);
data->vio = mysqlnd_vio_init(persistent, data->stats, data->error_info);
data->payload_decoder_factory = mysqlnd_protocol_payload_decoder_factory_init(data, persistent);
data->command_factory = mysqlnd_command_factory_get();
/* }}} */
-/* {{{ mysqlnd_object_factory::get_net */
-static MYSQLND_NET *
-MYSQLND_METHOD(mysqlnd_object_factory, get_net)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
+/* {{{ mysqlnd_object_factory::get_ppec */
+static MYSQLND_PPEC *
+MYSQLND_METHOD(mysqlnd_object_factory, get_ppec)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
{
- size_t net_alloc_size = sizeof(MYSQLND_NET) + mysqlnd_plugin_count() * sizeof(void *);
- size_t net_data_alloc_size = sizeof(MYSQLND_NET_DATA) + mysqlnd_plugin_count() * sizeof(void *);
- MYSQLND_NET * net = mnd_pecalloc(1, net_alloc_size, persistent);
- MYSQLND_NET_DATA * net_data = mnd_pecalloc(1, net_data_alloc_size, persistent);
+ size_t ppec_alloc_size = sizeof(MYSQLND_PPEC) + mysqlnd_plugin_count() * sizeof(void *);
+ size_t ppec_data_alloc_size = sizeof(MYSQLND_PPEC_DATA) + mysqlnd_plugin_count() * sizeof(void *);
+ MYSQLND_PPEC * ppec = mnd_pecalloc(1, ppec_alloc_size, persistent);
+ MYSQLND_PPEC_DATA * ppec_data = mnd_pecalloc(1, ppec_data_alloc_size, persistent);
- DBG_ENTER("mysqlnd_object_factory::get_net");
+ DBG_ENTER("mysqlnd_object_factory::get_ppec");
DBG_INF_FMT("persistent=%u", persistent);
- if (net && net_data) {
- net->data = net_data;
- net->persistent = net->data->persistent = persistent;
- net->data->m = *mysqlnd_net_get_methods();
-
- if (PASS != net->data->m.init(net, stats, error_info)) {
- net->data->m.dtor(net, stats, error_info);
- net = NULL;
+ if (ppec && ppec_data) {
+ ppec->data = ppec_data;
+ ppec->persistent = ppec->data->persistent = persistent;
+ ppec->data->m = *mysqlnd_ppec_get_methods();
+
+ if (PASS != ppec->data->m.init(ppec, stats, error_info)) {
+ ppec->data->m.dtor(ppec, stats, error_info);
+ ppec = NULL;
}
} else {
- if (net_data) {
- mnd_pefree(net_data, persistent);
- net_data = NULL;
+ if (ppec_data) {
+ mnd_pefree(ppec_data, persistent);
+ ppec_data = NULL;
}
- if (net) {
- mnd_pefree(net, persistent);
- net = NULL;
+ if (ppec) {
+ mnd_pefree(ppec, persistent);
+ ppec = NULL;
}
}
- DBG_RETURN(net);
+ DBG_RETURN(ppec);
}
/* }}} */
MYSQLND_METHOD(mysqlnd_object_factory, get_connection),
MYSQLND_METHOD(mysqlnd_object_factory, clone_connection_object),
MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement),
- MYSQLND_METHOD(mysqlnd_object_factory, get_net),
+ MYSQLND_METHOD(mysqlnd_object_factory, get_ppec),
MYSQLND_METHOD(mysqlnd_object_factory, get_vio),
MYSQLND_METHOD(mysqlnd_object_factory, get_protocol_payload_decoder_factory)
MYSQLND_CLASS_METHODS_END;
/* }}} */
-/* {{{ mysqlnd_plugin__get_plugin_net_data */
+/* {{{ mysqlnd_plugin__get_plugin_ppec_data */
static void **
-mysqlnd_plugin__get_plugin_net_data(const MYSQLND_NET * net, unsigned int plugin_id)
+mysqlnd_plugin__get_plugin_ppec_data(const MYSQLND_PPEC * ppec, unsigned int plugin_id)
{
- DBG_ENTER("_mysqlnd_plugin__get_plugin_net_data");
+ DBG_ENTER("mysqlnd_plugin__get_plugin_ppec_data");
DBG_INF_FMT("plugin_id=%u", plugin_id);
- if (!net || plugin_id >= mysqlnd_plugin_count()) {
+ if (!ppec || plugin_id >= mysqlnd_plugin_count()) {
return NULL;
}
- DBG_RETURN((void *)((char *)net + sizeof(MYSQLND_NET) + plugin_id * sizeof(void *)));
+ DBG_RETURN((void *)((char *)ppec + sizeof(MYSQLND_PPEC) + plugin_id * sizeof(void *)));
+}
+/* }}} */
+
+
+/* {{{ _mysqlnd_plugin__get_plugin_vio_data */
+static void **
+mysqlnd_plugin__get_plugin_vio_data(const MYSQLND_VIO * vio, unsigned int plugin_id)
+{
+ DBG_ENTER("_mysqlnd_plugin__get_plugin_vio_data");
+ DBG_INF_FMT("plugin_id=%u", plugin_id);
+ if (!vio || plugin_id >= mysqlnd_plugin_count()) {
+ return NULL;
+ }
+ DBG_RETURN((void *)((char *)vio + sizeof(MYSQLND_VIO) + plugin_id * sizeof(void *)));
}
/* }}} */
mysqlnd_plugin__get_plugin_result_buffered_data_c,
mysqlnd_plugin__get_plugin_stmt_data,
mysqlnd_plugin__get_plugin_protocol_data,
- mysqlnd_plugin__get_plugin_net_data,
+ mysqlnd_plugin__get_plugin_ppec_data,
+ mysqlnd_plugin__get_plugin_vio_data,
};
/* }}} */
-/* {{{ _mysqlnd_net_get_methods */
-static MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) *
-_mysqlnd_net_get_methods()
+/* {{{ _mysqlnd_ppec_get_methods */
+static MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) *
+_mysqlnd_ppec_get_methods()
{
- return &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_net);
+ return &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_protocol_packet_envelope_codec);
}
/* }}} */
-/* {{{ _mysqlnd_net_set_methods */
+/* {{{ _mysqlnd_ppec_set_methods */
static void
-_mysqlnd_net_set_methods(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) * methods)
+_mysqlnd_ppec_set_methods(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) * methods)
{
- MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_net) = *methods;
+ MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_protocol_packet_envelope_codec) = *methods;
}
/* }}} */
_mysqlnd_protocol_payload_decoder_factory_set_methods,
},
{
- _mysqlnd_net_get_methods,
- _mysqlnd_net_set_methods,
+ _mysqlnd_ppec_get_methods,
+ _mysqlnd_ppec_set_methods,
},
{
_mysqlnd_vio_get_methods,
void ** (*get_result_buffered_aread_c)(const MYSQLND_RES_BUFFERED_C * result, unsigned int plugin_id);
void ** (*get_stmt_area)(const MYSQLND_STMT * stmt, unsigned int plugin_id);
void ** (*get_protocol_decoder_area)(const MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * factory, unsigned int plugin_id);
- void ** (*get_net_area)(const MYSQLND_NET * net, unsigned int plugin_id);
+ void ** (*get_ppec_area)(const MYSQLND_PPEC * ppec, unsigned int plugin_id);
+ void ** (*get_vio_area)(const MYSQLND_VIO * vio, unsigned int plugin_id);
};
extern struct st_mysqlnd_plugin__plugin_area_getters mysqlnd_plugin_area_getters;
#define mysqlnd_plugin_get_plugin_result_buffered_data_c(res, p_id) mysqlnd_plugin_area_getters.get_result_buffered_aread_c((res), (p_id))
#define mysqlnd_plugin_get_plugin_stmt_data(stmt, p_id) mysqlnd_plugin_area_getters.get_stmt_area((stmt), (p_id))
#define mysqlnd_plugin_get_plugin_protocol_data(proto, p_id) mysqlnd_plugin_area_getters.get_protocol_decoder_area((proto), (p_id))
-#define mysqlnd_plugin_get_plugin_net_data(net, p_id) mysqlnd_plugin_area_getters.get_net_area((net), (p_id))
+#define mysqlnd_plugin_get_plugin_ppec_data(ppec, p_id) mysqlnd_plugin_area_getters.get_ppec_area((ppec), (p_id))
+#define mysqlnd_plugin_get_plugin_vio_data(vio, p_id) mysqlnd_plugin_area_getters.get_ppec_area((vio), (p_id))
struct st_mysqlnd_plugin_methods_xetters
void (*set)(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_payload_decoder_factory) *methods);
} protocol;
- struct st_mnd_net_xetters
+ struct st_mnd_ppec_xetters
{
- MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) * (*get)();
- void (*set)(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) * methods);
- } net;
+ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) * (*get)();
+ void (*set)(MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) * methods);
+ } ppec;
struct st_mnd_vio_xetters
{
#define mysqlnd_protocol_get_methods() mysqlnd_plugin_methods_xetters.protocol.get()
#define mysqlnd_protocol_set_methods(m) mysqlnd_plugin_methods_xetters.protocol.set((m))
-#define mysqlnd_net_get_methods() mysqlnd_plugin_methods_xetters.net.get()
-#define mysqlnd_net_set_methods(m) mysqlnd_plugin_methods_xetters.net.set((m))
+#define mysqlnd_ppec_get_methods() mysqlnd_plugin_methods_xetters.ppec.get()
+#define mysqlnd_ppec_set_methods(m) mysqlnd_plugin_methods_xetters.ppec.set((m))
#define mysqlnd_vio_get_methods() mysqlnd_plugin_methods_xetters.vio.get()
#define mysqlnd_vio_set_methods(m) mysqlnd_plugin_methods_xetters.vio.set((m))
int bufsize;
size_t ret;
MYSQLND_INFILE infile;
- MYSQLND_NET * net = conn->net;
+ MYSQLND_PPEC * net = conn->net;
MYSQLND_VIO * vio = conn->vio;
DBG_ENTER("mysqlnd_handle_local_infile");
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_result_unbuffered);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_result_buffered);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_protocol_payload_decoder_factory);
-PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_net);
+PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_protocol_packet_envelope_codec);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_vio);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_upsert_status);
PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_error_info);
/* }}} */
-/* {{{ mysqlnd_stmt::net_close */
+/* {{{ mysqlnd_stmt::close_on_server */
static enum_func_status
-MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, net_close)(MYSQLND_STMT * const s, zend_bool implicit)
+MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server)(MYSQLND_STMT * const s, zend_bool implicit)
{
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
MYSQLND_CONN_DATA * conn;
enum_mysqlnd_collected_stats statistic = STAT_LAST;
- DBG_ENTER("mysqlnd_stmt::net_close");
+ DBG_ENTER("mysqlnd_stmt::close_on_server");
if (!stmt || !stmt->conn) {
DBG_RETURN(FAIL);
}
MYSQLND_INC_GLOBAL_STATISTIC(implicit == TRUE? STAT_STMT_CLOSE_IMPLICIT:
STAT_STMT_CLOSE_EXPLICIT);
- ret = s->m->net_close(s, implicit);
+ ret = s->m->close_on_server(s, implicit);
mnd_pefree(stmt, persistent);
}
mnd_pefree(s, persistent);
MYSQLND_METHOD(mysqlnd_stmt, free_result),
MYSQLND_METHOD(mysqlnd_stmt, data_seek),
MYSQLND_METHOD(mysqlnd_stmt, reset),
- MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, net_close),
+ MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server),
MYSQLND_METHOD(mysqlnd_stmt, dtor),
MYSQLND_METHOD(mysqlnd_stmt, fetch),
#endif
} MYSQLND_SESSION_OPTIONS;
-typedef struct st_mysqlnd_net_options
+
+typedef struct st_mysqlnd_protocol_packet_envelope_codec_options
{
uint64_t flags;
char * sha256_server_public_key;
-} MYSQLND_NET_OPTIONS;
+} MYSQLND_PPEC_OPTIONS;
+
typedef struct st_mysqlnd_vio_options
{
typedef struct st_mysqlnd_connection MYSQLND;
typedef struct st_mysqlnd_connection_data MYSQLND_CONN_DATA;
-typedef struct st_mysqlnd_net MYSQLND_NET;
-typedef struct st_mysqlnd_net_data MYSQLND_NET_DATA;
+typedef struct st_mysqlnd_protocol_packet_envelope_codec MYSQLND_PPEC;
+typedef struct st_mysqlnd_protocol_packet_envelope_codec_data MYSQLND_PPEC_DATA;
typedef struct st_mysqlnd_vio MYSQLND_VIO;
typedef struct st_mysqlnd_vio_data MYSQLND_VIO_DATA;
typedef struct st_mysqlnd_protocol_payload_decoder_factory MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY;
};
-typedef struct st_mysqlnd_read_buffer {
- zend_uchar * data;
- size_t offset;
- size_t size;
- size_t len;
- zend_bool (*is_empty)(struct st_mysqlnd_read_buffer *);
- void (*read)(struct st_mysqlnd_read_buffer *, size_t count, zend_uchar * dest);
- size_t (*bytes_left)(struct st_mysqlnd_read_buffer *);
- void (*free_buffer)(struct st_mysqlnd_read_buffer **);
-} MYSQLND_READ_BUFFER;
-
-
-
-typedef enum_func_status (*func_mysqlnd_net__init)(MYSQLND_NET * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
-typedef void (*func_mysqlnd_net__dtor)(MYSQLND_NET * const net, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
-typedef enum_func_status (*func_mysqlnd_net__connect)(MYSQLND_NET * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
-typedef enum_func_status (*func_mysqlnd_net__set_client_option)(MYSQLND_NET * const net, enum_mysqlnd_client_option option, const char * const value);
-typedef enum_func_status (*func_mysqlnd_net__decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len, const zend_uchar * const compressed_data, const size_t compressed_data_len);
-typedef enum_func_status (*func_mysqlnd_net__encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len, const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len);
-typedef size_t (*func_mysqlnd_net__send)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
-typedef enum_func_status (*func_mysqlnd_net__receive)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
-typedef enum_func_status (*func_mysqlnd_net__read_compressed_packet_from_stream_and_fill_read_buffer)(MYSQLND_NET * net, MYSQLND_VIO * const vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info);
-typedef void (*func_mysqlnd_net__free_contents)(MYSQLND_NET * net);
-
-MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net)
-{
- func_mysqlnd_net__init init;
- func_mysqlnd_net__dtor dtor;
- func_mysqlnd_net__connect connect;
- func_mysqlnd_net__set_client_option set_client_option;
-
- func_mysqlnd_net__decode decode;
- func_mysqlnd_net__encode encode;
-
- func_mysqlnd_net__send send;
- func_mysqlnd_net__receive receive;
-
- func_mysqlnd_net__read_compressed_packet_from_stream_and_fill_read_buffer read_compressed_packet_from_stream_and_fill_read_buffer;
-
- func_mysqlnd_net__free_contents free_contents;
-};
-
-
typedef enum_func_status (*func_mysqlnd_vio__init)(MYSQLND_VIO * const vio, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
typedef void (*func_mysqlnd_vio__dtor)(MYSQLND_VIO * const vio, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
typedef MYSQLND * (*func_mysqlnd_object_factory__get_connection)(struct st_mysqlnd_object_factory_methods * factory, zend_bool persistent);
typedef MYSQLND * (*func_mysqlnd_object_factory__clone_connection_object)(MYSQLND * conn);
typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND_CONN_DATA * conn, zend_bool persistent);
-typedef MYSQLND_NET * (*func_mysqlnd_object_factory__get_net)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
+typedef MYSQLND_PPEC * (*func_mysqlnd_object_factory__get_net)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
typedef MYSQLND_VIO * (*func_mysqlnd_object_factory__get_vio)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
typedef MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * (*func_mysqlnd_object_factory__get_protocol_payload_decoder_factory)(MYSQLND_CONN_DATA * conn, zend_bool persistent);
typedef enum_func_status (*func_mysqlnd_stmt__free_result)(MYSQLND_STMT * const stmt);
typedef enum_func_status (*func_mysqlnd_stmt__seek_data)(const MYSQLND_STMT * const stmt, uint64_t row);
typedef enum_func_status (*func_mysqlnd_stmt__reset)(MYSQLND_STMT * const stmt);
-typedef enum_func_status (*func_mysqlnd_stmt__net_close)(MYSQLND_STMT * const stmt, zend_bool implicit); /* private */
+typedef enum_func_status (*func_mysqlnd_stmt__close_on_server)(MYSQLND_STMT * const stmt, zend_bool implicit); /* private */
typedef enum_func_status (*func_mysqlnd_stmt__dtor)(MYSQLND_STMT * const stmt, zend_bool implicit); /* use this for mysqlnd_stmt_close */
typedef enum_func_status (*func_mysqlnd_stmt__fetch)(MYSQLND_STMT * const stmt, zend_bool * const fetched_anything);
typedef enum_func_status (*func_mysqlnd_stmt__bind_parameters)(MYSQLND_STMT * const stmt, MYSQLND_PARAM_BIND * const param_bind);
func_mysqlnd_stmt__free_result free_result;
func_mysqlnd_stmt__seek_data seek_data;
func_mysqlnd_stmt__reset reset;
- func_mysqlnd_stmt__net_close net_close;
+ func_mysqlnd_stmt__close_on_server close_on_server;
func_mysqlnd_stmt__dtor dtor;
func_mysqlnd_stmt__fetch fetch;
};
-struct st_mysqlnd_net_data
-{
- php_stream *stream;
- zend_bool compressed;
- zend_bool ssl;
- MYSQLND_NET_OPTIONS options;
-
- unsigned int refcount;
-
- zend_bool persistent;
-
- MYSQLND_CLASS_METHODS_TYPE(mysqlnd_net) m;
-};
-
-
-struct st_mysqlnd_net
-{
- /* cmd buffer */
-// MYSQLND_CMD_BUFFER cmd_buffer;
-
- struct st_mysqlnd_net_data * data;
-
-#ifdef MYSQLND_COMPRESSION_ENABLED
- MYSQLND_READ_BUFFER * uncompressed_data;
-#else
- void * unused_pad1;
-#endif
-
- zend_bool persistent;
-
- /* sequence for simple checking of correct packets */
- zend_uchar packet_no;
- zend_uchar compressed_envelope_packet_no;
-};
-
-
struct st_mysqlnd_vio_data
{
php_stream *stream;
struct st_mysqlnd_connection_data
{
/* Operation related */
- MYSQLND_NET * net;
+ MYSQLND_PPEC * net;
MYSQLND_VIO * vio;
MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * payload_decoder_factory;
};
+typedef struct st_mysqlnd_read_buffer {
+ zend_uchar * data;
+ size_t offset;
+ size_t size;
+ size_t len;
+ zend_bool (*is_empty)(struct st_mysqlnd_read_buffer *);
+ void (*read)(struct st_mysqlnd_read_buffer *, size_t count, zend_uchar * dest);
+ size_t (*bytes_left)(struct st_mysqlnd_read_buffer *);
+ void (*free_buffer)(struct st_mysqlnd_read_buffer **);
+} MYSQLND_READ_BUFFER;
+
+
+
+typedef enum_func_status (*func_mysqlnd_ppec__init)(MYSQLND_PPEC * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
+typedef void (*func_mysqlnd_ppec__dtor)(MYSQLND_PPEC * const net, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
+typedef enum_func_status (*func_mysqlnd_ppec__connect)(MYSQLND_PPEC * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
+typedef enum_func_status (*func_mysqlnd_ppec__set_client_option)(MYSQLND_PPEC * const net, enum_mysqlnd_client_option option, const char * const value);
+typedef enum_func_status (*func_mysqlnd_ppec__decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len, const zend_uchar * const compressed_data, const size_t compressed_data_len);
+typedef enum_func_status (*func_mysqlnd_ppec__encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len, const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len);
+typedef size_t (*func_mysqlnd_ppec__send)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
+typedef enum_func_status (*func_mysqlnd_ppec__receive)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
+typedef enum_func_status (*func_mysqlnd_ppec__read_compressed_packet_from_stream_and_fill_read_buffer)(MYSQLND_PPEC * net, MYSQLND_VIO * const vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info);
+typedef void (*func_mysqlnd_ppec__free_contents)(MYSQLND_PPEC * net);
+
+MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec)
+{
+ func_mysqlnd_ppec__init init;
+ func_mysqlnd_ppec__dtor dtor;
+ func_mysqlnd_ppec__connect connect;
+ func_mysqlnd_ppec__set_client_option set_client_option;
+
+ func_mysqlnd_ppec__decode decode;
+ func_mysqlnd_ppec__encode encode;
+
+ func_mysqlnd_ppec__send send;
+ func_mysqlnd_ppec__receive receive;
+
+ func_mysqlnd_ppec__read_compressed_packet_from_stream_and_fill_read_buffer read_compressed_packet_from_stream_and_fill_read_buffer;
+
+ func_mysqlnd_ppec__free_contents free_contents;
+};
+
+
+struct st_mysqlnd_protocol_packet_envelope_codec_data
+{
+ php_stream *stream;
+ zend_bool compressed;
+ zend_bool ssl;
+ MYSQLND_PPEC_OPTIONS options;
+
+ unsigned int refcount;
+
+ zend_bool persistent;
+
+ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) m;
+};
+
+
+struct st_mysqlnd_protocol_packet_envelope_codec
+{
+ struct st_mysqlnd_protocol_packet_envelope_codec_data * data;
+
+#ifdef MYSQLND_COMPRESSION_ENABLED
+ MYSQLND_READ_BUFFER * uncompressed_data;
+#else
+ void * unused_pad1;
+#endif
+
+ zend_bool persistent;
+
+ /* sequence for simple checking of correct packets */
+ zend_uchar packet_no;
+ zend_uchar compressed_envelope_packet_no;
+};
+
+
struct mysqlnd_field_hash_key
{
MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd,
const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len,
const MYSQLND_SESSION_OPTIONS * const session_options,
- const MYSQLND_NET_OPTIONS * const net_options, zend_ulong mysql_flags
+ const MYSQLND_PPEC_OPTIONS * const net_options, zend_ulong mysql_flags
);
struct st_mysqlnd_authentication_plugin
+----------------------------------------------------------------------+
| Authors: Andrey Hristov <andrey@mysql.com> |
| Ulf Wendel <uwendel@mysql.com> |
- | Georg Richter <georg@mysql.com> |
+----------------------------------------------------------------------+
*/
php_stream * net_stream = net->data->get_stream(net);
int was_blocked = net_stream->ops->set_option(net_stream, opt, 0, NULL);
- DBG_ENTER("mysqlnd_net::consume_uneaten_data");
+ DBG_ENTER("mysqlnd_vio::consume_uneaten_data");
if (PHP_STREAM_OPTION_RETURN_ERR != was_blocked) {
/* Do a read of 1 byte */
static enum_func_status
MYSQLND_METHOD(mysqlnd_vio, disable_ssl)(MYSQLND_VIO * const vio)
{
- DBG_ENTER("mysqlnd_net::disable_ssl");
+ DBG_ENTER("mysqlnd_vio::disable_ssl");
DBG_RETURN(PASS);
}
/* }}} */
+----------------------------------------------------------------------+
| Authors: Andrey Hristov <andrey@mysql.com> |
| Ulf Wendel <uwendel@mysql.com> |
- | Georg Richter <georg@mysql.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_wireprotocol.h 291983 2009-12-11 11:58:57Z andrey $ */
-
-#ifndef MYSQLND_NET_H
-#define MYSQLND_NET_H
-
-PHPAPI MYSQLND_NET * mysqlnd_net_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
-PHPAPI void mysqlnd_net_free(MYSQLND_NET * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
+#ifndef MYSQLND_VIO_H
+#define MYSQLND_VIO_H
PHPAPI MYSQLND_VIO * mysqlnd_vio_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
PHPAPI void mysqlnd_vio_free(MYSQLND_VIO * const vio, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
-#endif /* MYSQLND_NET_H */
+#endif /* MYSQLND_VIO_H */
/*
* Local variables:
/* {{{ mysqlnd_read_header */
static enum_func_status
-mysqlnd_read_header(MYSQLND_NET * net, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER * header,
+mysqlnd_read_header(MYSQLND_PPEC * net, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER * header,
MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info)
{
zend_uchar buffer[MYSQLND_HEADER_SIZE];
/* {{{ mysqlnd_read_packet_header_and_body */
static enum_func_status
mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
- MYSQLND_NET * net,
+ MYSQLND_PPEC * net,
MYSQLND_VIO * vio,
MYSQLND_STATS * stats,
MYSQLND_ERROR_INFO * error_info,
zend_uchar *pad_start = NULL;
MYSQLND_PACKET_GREET *packet= (MYSQLND_PACKET_GREET *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
MYSQLND_PACKET_AUTH * packet= (MYSQLND_PACKET_AUTH *) _packet;
MYSQLND_CONN_DATA * conn = packet->header.conn;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
{
register MYSQLND_PACKET_AUTH_RESPONSE * packet= (MYSQLND_PACKET_AUTH_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
{
MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *packet= (MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
{
register MYSQLND_PACKET_OK *packet= (MYSQLND_PACKET_OK *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
*/
MYSQLND_PACKET_EOF *packet= (MYSQLND_PACKET_EOF *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
/* Let's have some space, which we can use, if not enough, we will allocate new buffer */
MYSQLND_PACKET_COMMAND * packet= (MYSQLND_PACKET_COMMAND *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
{
MYSQLND_PACKET_RSET_HEADER * packet= (MYSQLND_PACKET_RSET_HEADER *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
/* Should be enough for the metadata of a single row */
MYSQLND_PACKET_RES_FIELD *packet = (MYSQLND_PACKET_RES_FIELD *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
/* {{{ php_mysqlnd_read_row_ex */
static enum_func_status
-php_mysqlnd_read_row_ex(MYSQLND_NET * net,
+php_mysqlnd_read_row_ex(MYSQLND_PPEC * net,
MYSQLND_VIO * vio,
MYSQLND_STATS * stats,
MYSQLND_ERROR_INFO * error_info,
{
MYSQLND_PACKET_ROW *packet= (MYSQLND_PACKET_ROW *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
zend_uchar *p;
{
MYSQLND_PACKET_STATS *packet= (MYSQLND_PACKET_STATS *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
{
MYSQLND_PACKET_PREPARE_RESPONSE *packet= (MYSQLND_PACKET_PREPARE_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
{
MYSQLND_PACKET_CHG_USER_RESPONSE *packet= (MYSQLND_PACKET_CHG_USER_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
{
MYSQLND_PACKET_SHA256_PK_REQUEST * packet = (MYSQLND_PACKET_SHA256_PK_REQUEST *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
zend_uchar buffer[MYSQLND_HEADER_SIZE + 1];
{
MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE * packet= (MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE *) _packet;
MYSQLND_ERROR_INFO * error_info = packet->header.error_info;
- MYSQLND_NET * net = packet->header.net;
+ MYSQLND_PPEC * net = packet->header.net;
MYSQLND_VIO * vio = packet->header.vio;
MYSQLND_STATS * stats = packet->header.stats;
MYSQLND_CONNECTION_STATE * connection_state = packet->header.connection_state;
-/* {{{ mysqlnd_net::connect */
+/* {{{ mysqlnd_ppec::connect */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, connect)(MYSQLND_NET * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent,
+MYSQLND_METHOD(mysqlnd_ppec, connect)(MYSQLND_PPEC * const net, const MYSQLND_CSTRING scheme, const zend_bool persistent,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info)
{
- DBG_ENTER("mysqlnd_net::connect");
+ DBG_ENTER("mysqlnd_ppec::connect");
net->packet_no = net->compressed_envelope_packet_no = 0;
DBG_RETURN(PASS);
}
#define RESTORE_HEADER_SIZE(buffer, safe_storage) STORE_HEADER_SIZE((safe_storage), (buffer))
-/* {{{ mysqlnd_net::send */
+/* {{{ mysqlnd_ppec::send */
/*
IMPORTANT : It's expected that buffer has place in the beginning for MYSQLND_HEADER_SIZE !!!!
This is done for performance reasons in the caller of this function.
count + MYSQLND_HEADER_SIZE = sizeof(buffer) (not the pointer but the actual buffer)
*/
static size_t
-MYSQLND_METHOD(mysqlnd_net, send)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count,
+MYSQLND_METHOD(mysqlnd_ppec, send)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info)
{
zend_uchar safe_buf[((MYSQLND_HEADER_SIZE) + (sizeof(zend_uchar)) - 1) / (sizeof(zend_uchar))];
zend_uchar * compress_buf = NULL;
size_t to_be_sent;
- DBG_ENTER("mysqlnd_net::send");
+ DBG_ENTER("mysqlnd_ppec::send");
DBG_INF_FMT("count=" MYSQLND_SZ_T_SPEC " compression=%u", count, net->data->compressed);
if (net->data->compressed == TRUE) {
/* }}} */
-/* {{{ mysqlnd_net::read_compressed_packet_from_stream_and_fill_read_buffer */
+/* {{{ mysqlnd_ppec::read_compressed_packet_from_stream_and_fill_read_buffer */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, read_compressed_packet_from_stream_and_fill_read_buffer)
- (MYSQLND_NET * net, MYSQLND_VIO * vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info)
+MYSQLND_METHOD(mysqlnd_ppec, read_compressed_packet_from_stream_and_fill_read_buffer)
+ (MYSQLND_PPEC * net, MYSQLND_VIO * vio, size_t net_payload_size, MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info)
{
size_t decompressed_size;
enum_func_status retval = PASS;
zend_uchar * compressed_data = NULL;
zend_uchar comp_header[COMPRESSED_HEADER_SIZE];
- DBG_ENTER("mysqlnd_net::read_compressed_packet_from_stream_and_fill_read_buffer");
+ DBG_ENTER("mysqlnd_ppec::read_compressed_packet_from_stream_and_fill_read_buffer");
/* Read the compressed header */
if (FAIL == vio->data->m.network_read(vio, comp_header, COMPRESSED_HEADER_SIZE, conn_stats, error_info)) {
#endif /* MYSQLND_COMPRESSION_ENABLED */
-/* {{{ mysqlnd_net::decode */
+/* {{{ mysqlnd_ppec::decode */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len,
+MYSQLND_METHOD(mysqlnd_ppec, decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len,
const zend_uchar * const compressed_data, const size_t compressed_data_len)
{
#ifdef MYSQLND_COMPRESSION_ENABLED
int error;
uLongf tmp_complen = uncompressed_data_len;
- DBG_ENTER("mysqlnd_net::decode");
+ DBG_ENTER("mysqlnd_ppec::decode");
error = uncompress(uncompressed_data, &tmp_complen, compressed_data, compressed_data_len);
DBG_INF_FMT("compressed data: decomp_len=%lu compressed_size="MYSQLND_SZ_T_SPEC, tmp_complen, compressed_data_len);
}
DBG_RETURN(error == Z_OK? PASS:FAIL);
#else
- DBG_ENTER("mysqlnd_net::decode");
+ DBG_ENTER("mysqlnd_ppec::decode");
DBG_RETURN(FAIL);
#endif
}
/* }}} */
-/* {{{ mysqlnd_net::encode */
+/* {{{ mysqlnd_ppec::encode */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len,
+MYSQLND_METHOD(mysqlnd_ppec, encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len,
const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len)
{
#ifdef MYSQLND_COMPRESSION_ENABLED
int error;
uLongf tmp_complen = *compress_buffer_len;
- DBG_ENTER("mysqlnd_net::encode");
+ DBG_ENTER("mysqlnd_ppec::encode");
error = compress(compress_buffer, &tmp_complen, uncompressed_data, uncompressed_data_len);
if (error != Z_OK) {
DBG_RETURN(error == Z_OK? PASS:FAIL);
#else
- DBG_ENTER("mysqlnd_net::encode");
+ DBG_ENTER("mysqlnd_ppec::encode");
DBG_RETURN(FAIL);
#endif
}
/* }}} */
-/* {{{ mysqlnd_net::receive */
+/* {{{ mysqlnd_ppec::receive */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, receive)(MYSQLND_NET * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count,
+MYSQLND_METHOD(mysqlnd_ppec, receive)(MYSQLND_PPEC * const net, MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info)
{
size_t to_read = count;
zend_uchar * p = buffer;
- DBG_ENTER("mysqlnd_net::receive");
+ DBG_ENTER("mysqlnd_ppec::receive");
#ifdef MYSQLND_COMPRESSION_ENABLED
if (net->data->compressed) {
if (net->uncompressed_data) {
/* }}} */
-/* {{{ mysqlnd_net::set_client_option */
+/* {{{ mysqlnd_ppec::set_client_option */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, set_client_option)(MYSQLND_NET * const net, enum_mysqlnd_client_option option, const char * const value)
+MYSQLND_METHOD(mysqlnd_ppec, set_client_option)(MYSQLND_PPEC * const net, enum_mysqlnd_client_option option, const char * const value)
{
- DBG_ENTER("mysqlnd_net::set_client_option");
+ DBG_ENTER("mysqlnd_ppec::set_client_option");
DBG_INF_FMT("option=%u", option);
switch (option) {
case MYSQL_OPT_COMPRESS:
/* }}} */
-/* {{{ mysqlnd_net::free_contents */
+/* {{{ mysqlnd_ppec::free_contents */
static void
-MYSQLND_METHOD(mysqlnd_net, free_contents)(MYSQLND_NET * net)
+MYSQLND_METHOD(mysqlnd_ppec, free_contents)(MYSQLND_PPEC * net)
{
zend_bool pers = net->persistent;
- DBG_ENTER("mysqlnd_net::free_contents");
+ DBG_ENTER("mysqlnd_ppec::free_contents");
#ifdef MYSQLND_COMPRESSION_ENABLED
if (net->uncompressed_data) {
/* }}} */
-/* {{{ mysqlnd_net::init */
+/* {{{ mysqlnd_ppec::init */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, init)(MYSQLND_NET * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
+MYSQLND_METHOD(mysqlnd_ppec, init)(MYSQLND_PPEC * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
{
return PASS;
}
/* }}} */
-/* {{{ mysqlnd_net::dtor */
+/* {{{ mysqlnd_ppec::dtor */
static void
-MYSQLND_METHOD(mysqlnd_net, dtor)(MYSQLND_NET * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
+MYSQLND_METHOD(mysqlnd_ppec, dtor)(MYSQLND_PPEC * const net, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
{
- DBG_ENTER("mysqlnd_net::dtor");
+ DBG_ENTER("mysqlnd_ppec::dtor");
if (net) {
net->data->m.free_contents(net);
/* }}} */
-MYSQLND_CLASS_METHODS_START(mysqlnd_net)
- MYSQLND_METHOD(mysqlnd_net, init),
- MYSQLND_METHOD(mysqlnd_net, dtor),
- MYSQLND_METHOD(mysqlnd_net, connect),
+MYSQLND_CLASS_METHODS_START(mysqlnd_protocol_packet_envelope_codec)
+ MYSQLND_METHOD(mysqlnd_ppec, init),
+ MYSQLND_METHOD(mysqlnd_ppec, dtor),
+ MYSQLND_METHOD(mysqlnd_ppec, connect),
- MYSQLND_METHOD(mysqlnd_net, set_client_option),
+ MYSQLND_METHOD(mysqlnd_ppec, set_client_option),
- MYSQLND_METHOD(mysqlnd_net, decode),
- MYSQLND_METHOD(mysqlnd_net, encode),
+ MYSQLND_METHOD(mysqlnd_ppec, decode),
+ MYSQLND_METHOD(mysqlnd_ppec, encode),
- MYSQLND_METHOD(mysqlnd_net, send),
- MYSQLND_METHOD(mysqlnd_net, receive),
+ MYSQLND_METHOD(mysqlnd_ppec, send),
+ MYSQLND_METHOD(mysqlnd_ppec, receive),
#ifdef MYSQLND_COMPRESSION_ENABLED
- MYSQLND_METHOD(mysqlnd_net, read_compressed_packet_from_stream_and_fill_read_buffer),
+ MYSQLND_METHOD(mysqlnd_ppec, read_compressed_packet_from_stream_and_fill_read_buffer),
#else
NULL,
#endif
- MYSQLND_METHOD(mysqlnd_net, free_contents),
+ MYSQLND_METHOD(mysqlnd_ppec, free_contents),
MYSQLND_CLASS_METHODS_END;
-/* {{{ mysqlnd_net_init */
-PHPAPI MYSQLND_NET *
-mysqlnd_net_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
+/* {{{ mysqlnd_ppec_init */
+PHPAPI MYSQLND_PPEC *
+mysqlnd_ppec_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
{
- MYSQLND_NET * net;
- DBG_ENTER("mysqlnd_net_init");
+ MYSQLND_PPEC * net;
+ DBG_ENTER("mysqlnd_ppec_init");
net = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_net(persistent, stats, error_info);
DBG_RETURN(net);
}
/* }}} */
-/* {{{ mysqlnd_net_free */
+/* {{{ mysqlnd_ppec_free */
PHPAPI void
-mysqlnd_net_free(MYSQLND_NET * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
+mysqlnd_ppec_free(MYSQLND_PPEC * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
{
- DBG_ENTER("mysqlnd_net_free");
+ DBG_ENTER("mysqlnd_ppec_free");
if (net) {
net->data->m.dtor(net, stats, error_info);
}
mysqlnd_packet_methods *m;
MYSQLND_CONN_DATA * conn;
- MYSQLND_NET * net;
+ MYSQLND_PPEC * net;
MYSQLND_VIO * vio;
MYSQLND_ERROR_INFO * error_info;
MYSQLND_STATS * stats;
PHPAPI MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * mysqlnd_protocol_payload_decoder_factory_init(MYSQLND_CONN_DATA * conn, zend_bool persistent);
PHPAPI void mysqlnd_protocol_payload_decoder_factory_free(MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * const payload_decoder_factory);
+
+PHPAPI MYSQLND_PPEC * mysqlnd_ppec_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
+PHPAPI void mysqlnd_ppec_free(MYSQLND_PPEC * const net, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info);
+
+
#endif /* MYSQLND_WIREPROTOCOL_H */
/*