Mercurial > pidgin
comparison src/plugin.h @ 6822:7dba3e17cb21
[gaim-migrate @ 7366]
Added plugin IPC. Its use is shown in plugins/ipc-test-server.c and
plugins/ipc-test-client.c.
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Sat, 13 Sep 2003 09:31:03 +0000 |
| parents | 41120df7ed94 |
| children | 6ed0a1c045b4 |
comparison
equal
deleted
inserted
replaced
| 6821:636b5215552e | 6822:7dba3e17cb21 |
|---|---|
| 22 */ | 22 */ |
| 23 #ifndef _GAIM_PLUGIN_H_ | 23 #ifndef _GAIM_PLUGIN_H_ |
| 24 #define _GAIM_PLUGIN_H_ | 24 #define _GAIM_PLUGIN_H_ |
| 25 | 25 |
| 26 #include <gmodule.h> | 26 #include <gmodule.h> |
| 27 #include "signals.h" | |
| 28 #include "value.h" | |
| 27 | 29 |
| 28 typedef struct _GaimPlugin GaimPlugin; /**< GaimPlugin */ | 30 typedef struct _GaimPlugin GaimPlugin; /**< GaimPlugin */ |
| 29 typedef struct _GaimPluginInfo GaimPluginInfo; /**< GaimPluginInfo */ | 31 typedef struct _GaimPluginInfo GaimPluginInfo; /**< GaimPluginInfo */ |
| 30 typedef struct _GaimPluginLoaderInfo GaimPluginLoaderInfo; | 32 typedef struct _GaimPluginLoaderInfo GaimPluginLoaderInfo; |
| 31 | 33 |
| 86 | 88 |
| 87 gboolean (*probe)(GaimPlugin *plugin); | 89 gboolean (*probe)(GaimPlugin *plugin); |
| 88 gboolean (*load)(GaimPlugin *plugin); | 90 gboolean (*load)(GaimPlugin *plugin); |
| 89 gboolean (*unload)(GaimPlugin *plugin); | 91 gboolean (*unload)(GaimPlugin *plugin); |
| 90 void (*destroy)(GaimPlugin *plugin); | 92 void (*destroy)(GaimPlugin *plugin); |
| 91 | |
| 92 /* XXX GaimSignalBroadcastFunc broadcast; */ | |
| 93 }; | 93 }; |
| 94 | 94 |
| 95 /** | 95 /** |
| 96 * A plugin handle. | 96 * A plugin handle. |
| 97 */ | 97 */ |
| 101 gboolean loaded; /**< The loaded state. */ | 101 gboolean loaded; /**< The loaded state. */ |
| 102 void *handle; /**< The module handle. */ | 102 void *handle; /**< The module handle. */ |
| 103 char *path; /**< The path to the plugin. */ | 103 char *path; /**< The path to the plugin. */ |
| 104 GaimPluginInfo *info; /**< The plugin information. */ | 104 GaimPluginInfo *info; /**< The plugin information. */ |
| 105 char *error; | 105 char *error; |
| 106 void *ipc_data; /**< IPC data. */ | |
| 106 void *extra; /**< Plugin-specific data. */ | 107 void *extra; /**< Plugin-specific data. */ |
| 107 }; | 108 }; |
| 108 | 109 |
| 109 #define GAIM_PLUGIN_LOADER_INFO(plugin) \ | 110 #define GAIM_PLUGIN_LOADER_INFO(plugin) \ |
| 110 ((GaimPluginLoaderInfo *)(plugin)->info->extra_info) | 111 ((GaimPluginLoaderInfo *)(plugin)->info->extra_info) |
| 223 gboolean gaim_plugin_is_loaded(const GaimPlugin *plugin); | 224 gboolean gaim_plugin_is_loaded(const GaimPlugin *plugin); |
| 224 | 225 |
| 225 /*@}*/ | 226 /*@}*/ |
| 226 | 227 |
| 227 /**************************************************************************/ | 228 /**************************************************************************/ |
| 229 /** @name Plugin IPC API */ | |
| 230 /**************************************************************************/ | |
| 231 /*@{*/ | |
| 232 | |
| 233 /** | |
| 234 * Registers an IPC command in a plugin. | |
| 235 * | |
| 236 * @param plugin The plugin to register the command with. | |
| 237 * @param command The name of the command. | |
| 238 * @param func The function to execute. | |
| 239 * @param marshal The marshalling function. | |
| 240 * @param ret_value The return value type. | |
| 241 * @param num_values The number of parameters. | |
| 242 * @param ... The parameter types. | |
| 243 * | |
| 244 * @return TRUE if the function was registered successfully, or | |
| 245 * FALSE otherwise. | |
| 246 */ | |
| 247 gboolean gaim_plugin_ipc_register(GaimPlugin *plugin, const char *command, | |
| 248 GaimCallback func, | |
| 249 GaimSignalMarshalFunc marshal, | |
| 250 GaimValue *ret_value, int num_params, ...); | |
| 251 | |
| 252 /** | |
| 253 * Unregisters an IPC command in a plugin. | |
| 254 * | |
| 255 * @param plugin The plugin to unregister the command from. | |
| 256 * @param command The name of the command. | |
| 257 */ | |
| 258 void gaim_plugin_ipc_unregister(GaimPlugin *plugin, const char *command); | |
| 259 | |
| 260 /** | |
| 261 * Unregisters all IPC commands in a plugin. | |
| 262 * | |
| 263 * @param plugin The plugin to unregister the commands from. | |
| 264 */ | |
| 265 void gaim_plugin_ipc_unregister_all(GaimPlugin *plugin); | |
| 266 | |
| 267 /** | |
| 268 * Returns a list of value types used for an IPC command. | |
| 269 * | |
| 270 * @param plugin The plugin. | |
| 271 * @param command The name of the command. | |
| 272 * @param ret_value The returned return value. | |
| 273 * @param num_params The returned number of parameters. | |
| 274 * @param params The returned list of parameters. | |
| 275 * | |
| 276 * @return TRUE if the command was found, or FALSE otherwise. | |
| 277 */ | |
| 278 gboolean gaim_plugin_ipc_get_params(GaimPlugin *plugin, const char *command, | |
| 279 GaimValue **ret_value, int *num_params, | |
| 280 GaimValue ***params); | |
| 281 | |
| 282 /** | |
| 283 * Executes an IPC command. | |
| 284 * | |
| 285 * @param plugin The plugin to execute the command on. | |
| 286 * @param command The name of the command. | |
| 287 * @param ok TRUE if the call was successful, or FALSE otherwise. | |
| 288 * @param ... The parameters to pass. | |
| 289 * | |
| 290 * @return The return value, which will be NULL if the command doesn't | |
| 291 * return a value. | |
| 292 */ | |
| 293 void *gaim_plugin_ipc_call(GaimPlugin *plugin, const char *command, | |
| 294 gboolean *ok, ...); | |
| 295 | |
| 296 /*@}*/ | |
| 297 | |
| 298 /**************************************************************************/ | |
| 228 /** @name Plugins API */ | 299 /** @name Plugins API */ |
| 229 /**************************************************************************/ | 300 /**************************************************************************/ |
| 230 /*@{*/ | 301 /*@{*/ |
| 231 | 302 |
| 232 /** | 303 /** |
