xref: /PHP-5.5/ext/mysqlnd/mysqlnd_ext_plugin.c (revision 73c1be26)
1 /*
2   +----------------------------------------------------------------------+
3   | PHP Version 5                                                        |
4   +----------------------------------------------------------------------+
5   | Copyright (c) 2006-2015 The PHP Group                                |
6   +----------------------------------------------------------------------+
7   | This source file is subject to version 3.01 of the PHP license,      |
8   | that is bundled with this package in the file LICENSE, and is        |
9   | available through the world-wide-web at the following url:           |
10   | http://www.php.net/license/3_01.txt                                  |
11   | If you did not receive a copy of the PHP license and are unable to   |
12   | obtain it through the world-wide-web, please send a note to          |
13   | license@php.net so we can mail you a copy immediately.               |
14   +----------------------------------------------------------------------+
15   | Authors: Andrey Hristov <andrey@mysql.com>                           |
16   |          Ulf Wendel <uwendel@mysql.com>                              |
17   |          Georg Richter <georg@mysql.com>                             |
18   +----------------------------------------------------------------------+
19 */
20 
21 /* $Id: mysqlnd.c 318221 2011-10-19 15:04:12Z andrey $ */
22 #include "php.h"
23 #include "mysqlnd.h"
24 #include "mysqlnd_priv.h"
25 #include "mysqlnd_result.h"
26 #include "mysqlnd_debug.h"
27 
28 static struct st_mysqlnd_conn_methods * mysqlnd_conn_methods;
29 static struct st_mysqlnd_conn_data_methods * mysqlnd_conn_data_methods;
30 static struct st_mysqlnd_stmt_methods * mysqlnd_stmt_methods;
31 
32 /* {{{ _mysqlnd_plugin_get_plugin_connection_data */
33 PHPAPI void **
_mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn,unsigned int plugin_id TSRMLS_DC)34 _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, unsigned int plugin_id TSRMLS_DC)
35 {
36 	DBG_ENTER("_mysqlnd_plugin_get_plugin_connection_data");
37 	DBG_INF_FMT("plugin_id=%u", plugin_id);
38 	if (!conn || plugin_id >= mysqlnd_plugin_count()) {
39 		return NULL;
40 	}
41 	DBG_RETURN((void *)((char *)conn + sizeof(MYSQLND) + plugin_id * sizeof(void *)));
42 }
43 /* }}} */
44 
45 
46 /* {{{ _mysqlnd_plugin_get_plugin_connection_data_data */
47 PHPAPI void **
_mysqlnd_plugin_get_plugin_connection_data_data(const MYSQLND_CONN_DATA * conn,unsigned int plugin_id TSRMLS_DC)48 _mysqlnd_plugin_get_plugin_connection_data_data(const MYSQLND_CONN_DATA * conn, unsigned int plugin_id TSRMLS_DC)
49 {
50 	DBG_ENTER("_mysqlnd_plugin_get_plugin_connection_data_data");
51 	DBG_INF_FMT("plugin_id=%u", plugin_id);
52 	if (!conn || plugin_id >= mysqlnd_plugin_count()) {
53 		return NULL;
54 	}
55 	DBG_RETURN((void *)((char *)conn + sizeof(MYSQLND_CONN_DATA) + plugin_id * sizeof(void *)));
56 }
57 /* }}} */
58 
59 
60 /* {{{ _mysqlnd_plugin_get_plugin_result_data */
_mysqlnd_plugin_get_plugin_result_data(const MYSQLND_RES * result,unsigned int plugin_id TSRMLS_DC)61 PHPAPI void ** _mysqlnd_plugin_get_plugin_result_data(const MYSQLND_RES * result, unsigned int plugin_id TSRMLS_DC)
62 {
63 	DBG_ENTER("_mysqlnd_plugin_get_plugin_result_data");
64 	DBG_INF_FMT("plugin_id=%u", plugin_id);
65 	if (!result || plugin_id >= mysqlnd_plugin_count()) {
66 		return NULL;
67 	}
68 	DBG_RETURN((void *)((char *)result + sizeof(MYSQLND_RES) + plugin_id * sizeof(void *)));
69 }
70 /* }}} */
71 
72 
73 /* {{{ _mysqlnd_plugin_get_plugin_protocol_data */
74 PHPAPI void **
_mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol,unsigned int plugin_id TSRMLS_DC)75 _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC)
76 {
77 	DBG_ENTER("_mysqlnd_plugin_get_plugin_protocol_data");
78 	DBG_INF_FMT("plugin_id=%u", plugin_id);
79 	if (!protocol || plugin_id >= mysqlnd_plugin_count()) {
80 		return NULL;
81 	}
82 	DBG_RETURN((void *)((char *)protocol + sizeof(MYSQLND_PROTOCOL) + plugin_id * sizeof(void *)));
83 }
84 /* }}} */
85 
86 
87 /* {{{ _mysqlnd_plugin_get_plugin_stmt_data */
_mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt,unsigned int plugin_id TSRMLS_DC)88 PHPAPI void ** _mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plugin_id TSRMLS_DC)
89 {
90 	DBG_ENTER("_mysqlnd_plugin_get_plugin_stmt_data");
91 	DBG_INF_FMT("plugin_id=%u", plugin_id);
92 	if (!stmt || plugin_id >= mysqlnd_plugin_count()) {
93 		return NULL;
94 	}
95 	DBG_RETURN((void *)((char *)stmt + sizeof(MYSQLND_STMT) + plugin_id * sizeof(void *)));
96 }
97 /* }}} */
98 
99 
100 /* {{{ _mysqlnd_plugin_get_plugin_net_data */
_mysqlnd_plugin_get_plugin_net_data(const MYSQLND_NET * net,unsigned int plugin_id TSRMLS_DC)101 PHPAPI void ** _mysqlnd_plugin_get_plugin_net_data(const MYSQLND_NET * net, unsigned int plugin_id TSRMLS_DC)
102 {
103 	DBG_ENTER("_mysqlnd_plugin_get_plugin_net_data");
104 	DBG_INF_FMT("plugin_id=%u", plugin_id);
105 	if (!net || plugin_id >= mysqlnd_plugin_count()) {
106 		return NULL;
107 	}
108 	DBG_RETURN((void *)((char *)net + sizeof(MYSQLND_NET) + plugin_id * sizeof(void *)));
109 }
110 /* }}} */
111 
112 
113 
114 /* {{{ mysqlnd_conn_get_methods */
115 PHPAPI struct st_mysqlnd_conn_methods *
mysqlnd_conn_get_methods()116 mysqlnd_conn_get_methods()
117 {
118 	return mysqlnd_conn_methods;
119 }
120 /* }}} */
121 
122 /* {{{ mysqlnd_conn_set_methods */
mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods * methods)123 PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods)
124 {
125 	mysqlnd_conn_methods = methods;
126 }
127 /* }}} */
128 
129 
130 /* {{{ mysqlnd_conn_get_methods */
131 PHPAPI struct st_mysqlnd_conn_data_methods *
mysqlnd_conn_data_get_methods()132 mysqlnd_conn_data_get_methods()
133 {
134 	return mysqlnd_conn_data_methods;
135 }
136 /* }}} */
137 
138 /* {{{ mysqlnd_conn_set_methods */
mysqlnd_conn_data_set_methods(struct st_mysqlnd_conn_data_methods * methods)139 PHPAPI void mysqlnd_conn_data_set_methods(struct st_mysqlnd_conn_data_methods * methods)
140 {
141 	mysqlnd_conn_data_methods = methods;
142 }
143 /* }}} */
144 
145 
146 /* {{{ mysqlnd_result_get_methods */
147 PHPAPI struct st_mysqlnd_res_methods *
mysqlnd_result_get_methods()148 mysqlnd_result_get_methods()
149 {
150 	return &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_res);
151 }
152 /* }}} */
153 
154 
155 /* {{{ mysqlnd_result_set_methods */
156 PHPAPI void
mysqlnd_result_set_methods(struct st_mysqlnd_res_methods * methods)157 mysqlnd_result_set_methods(struct st_mysqlnd_res_methods * methods)
158 {
159 	MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_res) = *methods;
160 }
161 /* }}} */
162 
163 
164 /* {{{ mysqlnd_stmt_get_methods */
165 PHPAPI struct st_mysqlnd_stmt_methods *
mysqlnd_stmt_get_methods()166 mysqlnd_stmt_get_methods()
167 {
168 	return mysqlnd_stmt_methods;
169 }
170 /* }}} */
171 
172 
173 /* {{{ mysqlnd_stmt_set_methods */
174 PHPAPI void
mysqlnd_stmt_set_methods(struct st_mysqlnd_stmt_methods * methods)175 mysqlnd_stmt_set_methods(struct st_mysqlnd_stmt_methods *methods)
176 {
177 	mysqlnd_stmt_methods = methods;
178 }
179 /* }}} */
180 
181 
182 /* {{{ mysqlnd_protocol_get_methods */
183 PHPAPI struct st_mysqlnd_protocol_methods *
mysqlnd_protocol_get_methods()184 mysqlnd_protocol_get_methods()
185 {
186 	return &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_protocol);
187 }
188 /* }}} */
189 
190 
191 /* {{{ mysqlnd_protocol_set_methods */
192 PHPAPI void
mysqlnd_protocol_set_methods(struct st_mysqlnd_protocol_methods * methods)193 mysqlnd_protocol_set_methods(struct st_mysqlnd_protocol_methods * methods)
194 {
195 	MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_protocol) = *methods;
196 }
197 /* }}} */
198 
199 
200 /* {{{ mysqlnd_net_get_methods */
201 PHPAPI struct st_mysqlnd_net_methods *
mysqlnd_net_get_methods()202 mysqlnd_net_get_methods()
203 {
204 	return &MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_net);
205 }
206 /* }}} */
207 
208 
209 /* {{{ mysqlnd_net_set_methods */
210 PHPAPI void
mysqlnd_net_set_methods(struct st_mysqlnd_net_methods * methods)211 mysqlnd_net_set_methods(struct st_mysqlnd_net_methods * methods)
212 {
213 	MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_net) = *methods;
214 }
215 /* }}} */
216 
217 
218 /*
219  * Local variables:
220  * tab-width: 4
221  * c-basic-offset: 4
222  * End:
223  * vim600: noet sw=4 ts=4 fdm=marker
224  * vim<600: noet sw=4 ts=4
225  */
226