diff options
Diffstat (limited to 'ext/mysqlnd')
-rw-r--r-- | ext/mysqlnd/config.w32 | 1 | ||||
-rw-r--r-- | ext/mysqlnd/config9.m4 | 2 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_protocol_frame_codec.c | 64 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_read_buffer.c | 95 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_read_buffer.h | 25 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_structs.h | 4 |
6 files changed, 125 insertions, 66 deletions
diff --git a/ext/mysqlnd/config.w32 b/ext/mysqlnd/config.w32 index 012c52401a..52be8f563c 100644 --- a/ext/mysqlnd/config.w32 +++ b/ext/mysqlnd/config.w32 @@ -21,6 +21,7 @@ if (PHP_MYSQLND != "no") { "mysqlnd_protocol_frame_codec.c " + "mysqlnd_ps.c " + "mysqlnd_ps_codec.c " + + "mysqlnd_read_buffer.c " + "mysqlnd_result.c " + "mysqlnd_result_meta.c " + "mysqlnd_statistics.c " + diff --git a/ext/mysqlnd/config9.m4 b/ext/mysqlnd/config9.m4 index e8f078aff6..b5f20a9c8b 100644 --- a/ext/mysqlnd/config9.m4 +++ b/ext/mysqlnd/config9.m4 @@ -22,7 +22,7 @@ if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes"; then mysqlnd_loaddata.c mysqlnd_reverse_api.c mysqlnd_vio.c mysqlnd_protocol_frame_codec.c \ mysqlnd_statistics.c mysqlnd_driver.c mysqlnd_ext_plugin.c mysqlnd_auth.c \ mysqlnd_result.c mysqlnd_result_meta.c mysqlnd_debug.c mysqlnd_commands.c \ - mysqlnd_block_alloc.c mysqlnd_plugin.c php_mysqlnd.c" + mysqlnd_block_alloc.c mysqlnd_read_buffer.c mysqlnd_plugin.c php_mysqlnd.c" if test "$PHP_MYSQLND_COMPRESSION_SUPPORT" != "no"; then diff --git a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c index a5dc1b0108..2a26bf8dfc 100644 --- a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c +++ b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c @@ -20,6 +20,7 @@ #include "mysqlnd.h" #include "mysqlnd_connection.h" #include "mysqlnd_priv.h" +#include "mysqlnd_read_buffer.h" #include "mysqlnd_wireprotocol.h" #include "mysqlnd_statistics.h" #include "mysqlnd_debug.h" @@ -183,69 +184,6 @@ MYSQLND_METHOD(mysqlnd_pfc, send)(MYSQLND_PFC * const pfc, MYSQLND_VIO * const v #ifdef MYSQLND_COMPRESSION_ENABLED -/* {{{ php_mysqlnd_read_buffer_is_empty */ -static zend_bool -php_mysqlnd_read_buffer_is_empty(MYSQLND_READ_BUFFER * buffer) -{ - return buffer->len? FALSE:TRUE; -} -/* }}} */ - - -/* {{{ php_mysqlnd_read_buffer_read */ -static void -php_mysqlnd_read_buffer_read(MYSQLND_READ_BUFFER * buffer, size_t count, zend_uchar * dest) -{ - if (buffer->len >= count) { - memcpy(dest, buffer->data + buffer->offset, count); - buffer->offset += count; - buffer->len -= count; - } -} -/* }}} */ - - -/* {{{ php_mysqlnd_read_buffer_bytes_left */ -static size_t -php_mysqlnd_read_buffer_bytes_left(MYSQLND_READ_BUFFER * buffer) -{ - return buffer->len; -} -/* }}} */ - - -/* {{{ php_mysqlnd_read_buffer_free */ -static void -php_mysqlnd_read_buffer_free(MYSQLND_READ_BUFFER ** buffer) -{ - DBG_ENTER("php_mysqlnd_read_buffer_free"); - if (*buffer) { - mnd_efree((*buffer)->data); - mnd_efree(*buffer); - *buffer = NULL; - } - DBG_VOID_RETURN; -} -/* }}} */ - - -/* {{{ php_mysqlnd_create_read_buffer */ -static MYSQLND_READ_BUFFER * -mysqlnd_create_read_buffer(size_t count) -{ - MYSQLND_READ_BUFFER * ret = mnd_emalloc(sizeof(MYSQLND_READ_BUFFER)); - DBG_ENTER("mysqlnd_create_read_buffer"); - ret->is_empty = php_mysqlnd_read_buffer_is_empty; - ret->read = php_mysqlnd_read_buffer_read; - ret->bytes_left = php_mysqlnd_read_buffer_bytes_left; - ret->free_buffer = php_mysqlnd_read_buffer_free; - ret->data = mnd_emalloc(count); - ret->size = ret->len = count; - ret->offset = 0; - DBG_RETURN(ret); -} -/* }}} */ - /* {{{ mysqlnd_pfc::read_compressed_packet_from_stream_and_fill_read_buffer */ static enum_func_status diff --git a/ext/mysqlnd/mysqlnd_read_buffer.c b/ext/mysqlnd/mysqlnd_read_buffer.c new file mode 100644 index 0000000000..99cb321f3f --- /dev/null +++ b/ext/mysqlnd/mysqlnd_read_buffer.c @@ -0,0 +1,95 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 7 | + +----------------------------------------------------------------------+ + | Copyright (c) 2006-2015 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andrey Hristov <andrey@mysql.com> | + | Ulf Wendel <uwendel@mysql.com> | + +----------------------------------------------------------------------+ +*/ +#include "php.h" +#include "mysqlnd.h" +#include "mysqlnd_debug.h" +#include "mysqlnd_read_buffer.h" + + +/* {{{ mysqlnd_read_buffer_is_empty */ +static zend_bool +mysqlnd_read_buffer_is_empty(const MYSQLND_READ_BUFFER * const buffer) +{ + return buffer->len? FALSE:TRUE; +} +/* }}} */ + + +/* {{{ mysqlnd_read_buffer_read */ +static void +mysqlnd_read_buffer_read(MYSQLND_READ_BUFFER * buffer, const size_t count, zend_uchar * dest) +{ + if (buffer->len >= count) { + memcpy(dest, buffer->data + buffer->offset, count); + buffer->offset += count; + buffer->len -= count; + } +} +/* }}} */ + + +/* {{{ mysqlnd_read_buffer_bytes_left */ +static size_t +mysqlnd_read_buffer_bytes_left(const MYSQLND_READ_BUFFER * const buffer) +{ + return buffer->len; +} +/* }}} */ + + +/* {{{ mysqlnd_read_buffer_free */ +static void +mysqlnd_read_buffer_free(MYSQLND_READ_BUFFER ** buffer) +{ + DBG_ENTER("mysqlnd_read_buffer_free"); + if (*buffer) { + mnd_efree((*buffer)->data); + mnd_efree(*buffer); + *buffer = NULL; + } + DBG_VOID_RETURN; +} +/* }}} */ + + +/* {{{ mysqlnd_create_read_buffer */ +PHPAPI MYSQLND_READ_BUFFER * +mysqlnd_create_read_buffer(const size_t count) +{ + MYSQLND_READ_BUFFER * ret = mnd_emalloc(sizeof(MYSQLND_READ_BUFFER)); + DBG_ENTER("mysqlnd_create_read_buffer"); + ret->is_empty = mysqlnd_read_buffer_is_empty; + ret->read = mysqlnd_read_buffer_read; + ret->bytes_left = mysqlnd_read_buffer_bytes_left; + ret->free_buffer = mysqlnd_read_buffer_free; + ret->data = mnd_emalloc(count); + ret->size = ret->len = count; + ret->offset = 0; + DBG_RETURN(ret); +} +/* }}} */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ diff --git a/ext/mysqlnd/mysqlnd_read_buffer.h b/ext/mysqlnd/mysqlnd_read_buffer.h new file mode 100644 index 0000000000..56286ae0fc --- /dev/null +++ b/ext/mysqlnd/mysqlnd_read_buffer.h @@ -0,0 +1,25 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 7 | + +----------------------------------------------------------------------+ + | Copyright (c) 2006-2015 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andrey Hristov <andrey@mysql.com> | + | Ulf Wendel <uwendel@mysql.com> | + +----------------------------------------------------------------------+ +*/ + +#ifndef MYSQLND_READ_BUFFER_H +#define MYSQLND_READ_BUFFER_H + +PHPAPI MYSQLND_READ_BUFFER * mysqlnd_create_read_buffer(const size_t count); + +#endif /* MYSQLND_READ_BUFFER_H */ diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index fb42d0a0cd..58efe02cf1 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -1063,9 +1063,9 @@ typedef struct st_mysqlnd_read_buffer { size_t offset; size_t size; size_t len; - zend_bool (*is_empty)(struct st_mysqlnd_read_buffer *); + zend_bool (*is_empty)(const 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 *); + size_t (*bytes_left)(const struct st_mysqlnd_read_buffer *); void (*free_buffer)(struct st_mysqlnd_read_buffer **); } MYSQLND_READ_BUFFER; |