dbporxy-mysql 协议流转图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了dbporxy-mysql 协议流转图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4141字,纯文字阅读大概需要6分钟。
内容图文
![dbporxy-mysql 协议流转图](/upload/InfoBanner/zyjiaocheng/501/37c9728efa564c1a8b455b42f0d03942.jpg)
plugins/proxy/proxy-plugin.c
//初始化 NETWORK_MYSQLD_PLUGIN_PROTO(proxy_init) { network_mysqld_con_lua_t *st = con->plugin_con_state; st = network_mysqld_con_lua_new(); con->plugin_con_state = st; con->state = CON_STATE_CONNECT_SERVER; return NETWORK_SOCKET_SUCCESS; } //连接backend, 就是准备些随机挑战数, 用于连接real mysql 用 NETWORK_MYSQLD_PLUGIN_PROTO(proxy_connect_server) { con->state = CON_STATE_SEND_HANDSHAKE; } //读取client发来的验证信息 NETWORK_MYSQLD_PLUGIN_PROTO(proxy_read_auth) { con->state = CON_STATE_SEND_AUTH_RESULT; } NETWORK_MYSQLD_PLUGIN_PROTO(proxy_read_query) { network_injection_queue_reset(st->injected.queries); sqls = sql_parse(con, tokens); for (i = 0; i < sqls->len; ++i) { inj = injection_new(id, sqls->pdata[i]); inj->resultset_is_needed = TRUE; g_queue_push_tail(st->injected.queries, inj); } inj = g_queue_peek_head(st->injected.queries); network_mysqld_queue_reset(send_sock); network_mysqld_queue_append(send_sock, send_sock->send_queue, S(inj->query)); con->state = CON_STATE_SEND_QUERY; } NETWORK_MYSQLD_PLUGIN_PROTO(proxy_read_query_result) { if (0 != st->injected.queries->length) { //在读取server返回数据时, 弹出st->injected.queries的头元素 inj = g_queue_pop_head(st->injected.queries); con->state = CON_STATE_READ_QUERY; } } //如果st->injected.queries队列中无数据, 设置状态为CON_STATE_READ_QUERY, 读取client 的新sql //否则, 继续向server发送队列中的sql NETWORK_MYSQLD_PLUGIN_PROTO(proxy_send_query_result) { if (st->injected.queries->length == 0) { con->state = CON_STATE_READ_QUERY; return NETWORK_SOCKET_SUCCESS; } //发送给client后, 将st->injected.queries的头元素 放到send_queue中 inj = g_queue_peek_head(st->injected.queries); network_mysqld_queue_reset(send_sock); network_mysqld_queue_append(send_sock, send_sock->send_queue, S(inj->query)); con->state = CON_STATE_SEND_QUERY; return NETWORK_SOCKET_SUCCESS; }
network_mysqld_con_lua_t *network_mysqld_con_lua_new() { network_mysqld_con_lua_t *st; st = g_new0(network_mysqld_con_lua_t, 1); st->injected.queries = network_injection_queue_new(); return st; }
dbporxy-mysql 协议流转图
标签:prot cli style read 验证 mysq serve cte soc
本文系统来源:https://www.cnblogs.com/taek/p/9819239.html
内容总结
以上是互联网集市为您收集整理的dbporxy-mysql 协议流转图全部内容,希望文章能够帮你解决dbporxy-mysql 协议流转图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。