美文网首页
MySQL的钩子函数

MySQL的钩子函数

作者: 斜不靠谱 | 来源:发表于2019-05-11 15:10 被阅读0次

    rpl_handler.h中有个钩子函数的宏定义(percona-server-5.7.21-21)

    #define RUN_HOOK(group, hook, args)             \
      (group ##_delegate->is_empty() ?              \
       0 : group ##_delegate->hook args)
    

    这个mysql监听线程,半同步复制插件都是通过这个钩子加进去的

    第一眼看上去懵逼了,##_delegate是什么鬼,查看了c++宏定义语法才明白
    “##” 在宏定义中的作用则是将宏定义的多个形参成一个实际参数名
    例如 (void) RUN_HOOK(server_state, before_handle_connection, (NULL));
    即可展开为

      (server_state_delegate->is_empty() ?              \
       0 : server_state_delegate->before_handle_connection(NULL))
    

    并且 server_state_delegate 是作为参数名存在的,也就是其表示实际的对象或指针,可以进行方法调用

    相关文章

      网友评论

          本文标题:MySQL的钩子函数

          本文链接:https://www.haomeiwen.com/subject/lppxaqtx.html