每个客户端插件必须有一个描述符,用于向客户端插件API提供信息。描述符结构以一组对所有客户端插件都通用的固定成员开始,然后是特定于插件类型的任何成员。
这st_mysql_client_plugin
结构client_plugin.h.
文件定义A.“通用的“包含通用成员的描述符:
struct st_mysql_client_plugin {int类型;unsigned int interface_version;const char *姓名;const char *作者;const char * desc;unsigned int版本[3];const char *许可;void * mysql_api;int(* init)(char *,size_t,int,va_list);int(* deinit)(); int (*options)(const char *option, const void *); };
常见的st_mysql_client_plugin
描述符结构构件使用如下。char
成员应指定为以空结束的字符串。
类型
:插件类型。这必须是来自的插件类型值之一client_plugin.h.
, 如mysql_client_authentication_plugin.
。interface_version.
:插件界面版本。例如,这是MYSQL_CLIENT_AUTHENTICATION_PLUGIN_INTERFACE_VERSION
用于身份验证插件。名称
:一个给出插件名称的字符串。这是您致电时引用插件的名称mysql_options()
与mysql_default_auth.
选项或指定- Default-Auth.
选择MySQL客户端程序。作者
:一个字符串命名插件作者。这可以是你喜欢的。去世
:提供插件的概述的字符串。这可以是你喜欢的。版本
:插件版本,由三个整数组成,分别表示主要版本、次要版本和teeny版本。例如,{1,2,3}
显示版本1.2.3。许可证
: license类型的字符串。mysql_api.
:内部使用。指定它零
在插件描述符中。在里面
:一次初始化函数,或零
如果没有这样的函数。客户端库在加载插件时执行这个函数。该函数返回零以实现失败的成功和非零。这
在里面
函数使用其前两个参数如果发生错误,则会返回错误消息。第一个参数是指向a的指针字符
缓冲区,第二个参数表示缓冲区长度。返回的任何消息在里面
函数必须为null终止,因此最大消息长度是缓冲长度减去一个。下一个参数通过mysql_load_plugin()
。第一个指示有多少参数(如果没有),其次是任何剩余的参数。deinit
:仅一次的反初始化函数零
如果没有这样的函数。客户端库在卸载插件时执行此功能。该函数没有参数。它返回零以获得失败的成功和非零。选项
:将选项处理到插件的函数,或零
如果没有这样的函数。该函数需要两个参数,表示选项名称和指向其值的指针。该函数返回零以实现失败的成功和非零。
对于给定的客户端插件类型,公共描述符成员可以接下来的是实现该类型的插件所需的其他成员。例如,st_mysql_client_plugin_AUTHENTICATION
身份验证插件的结构在客户端库呼叫执行身份验证的末尾具有功能。
要声明插件,请使用mysql_declare_client_plugin()
和mysql_end_client_plugin
宏:
mysql_declare_client_plugin(plugin_type)…所有客户端插件的成员……特定类型的额外成员... mysql_end_client_plugin;
不要指定类型
或interface_version.
明确成员。这mysql_declare_client_plugin()
宏使用plugin_type
Argum自动生成其值。例如,声明如下所示的身份验证客户端插件:
mysql_declare_client_plugin(验证)“my_auth_plugin”,“author name”,“我的客户端身份验证plugin”,{1,0,0},“gpl”,null,my_auth_init,my_auth_deinit,my_auth_options,my_auth_main mysql_end_client_plugin;
此声明使用身份验证
设置的论点类型
和interface_version.
成员mysql_client_authentication_plugin.
和MYSQL_CLIENT_AUTHENTICATION_PLUGIN_INTERFACE_VERSION
。
根据插件类型,描述符可能在公共成员之后有其他成员。例如,对于一个认证插件,有一个函数(my_auth_main()
在刚刚显示的描述符中),它处理与服务器的通信。看第4.4.9节“编写身份验证插件”。
通常,支持使用身份验证插件的客户端程序会导致通过呼叫加载插件mysql_options()
设置mysql_default_auth.
和mysql_plugin_dir.
选项:
Char *plugin_dir = "path_to_plugin_dir.“; char * default_auth =”plugin_name“; / * ...进程命令行选项... * / mysql_options(&mysql,mysql_plugin_dir,plugin_dir); mysql_options(&mysql,mysql_default_auth,default_auth);
通常,该计划也将接受——plugin-dir
和- Default-Auth.
选项,使用户能够覆盖缺省值。
如果客户端程序需要较低级别的插件管理,则客户端库包含占用的函数st_mysql_client_plugin
争论。看C API客户端插件接口。