SX模块提供了Jabberd2的插件机制。在代码的关键部位为了扩展方便设置执行点,如果在此执行点上设置了“插件”,则按照注册插件的顺序执行这些注册的函数。 Jabberd2定义了一下结构体: /** a plugin */ struct _sx_plugin_st { sx_env_t env; /* unique id so that plugins can find each other */ int magic; /* 在sx_env_t中plugins数组中的索引 */ int index; /* 如果插件中需要保存一些自定义数据,可以保存在这里 */ void *private; /* pre-run init */ void (*new)(sx_t s, sx_plugin_t p); /* conn being freed */ void (*free)(sx_t s, sx_plugin_t p); /* client init */ void (*client)(sx_t s, sx_plugin_t p); /* server init */ void (*server)(sx_t s, sx_plugin_t p); /* return -2 =