Mercurial > pidgin
diff src/dbus-server.h @ 11067:2eca9ed49469
[gaim-migrate @ 13048]
Modified configure.ac so that it rejects dbus builds with the dbus
library older than 0.34
Added a simple object registration system to the dbus implementation
so that it is possible to query object properties remotely (eg. give
me property "name" of buddy with id = 5).
committer: Tailor Script <tailor@pidgin.im>
author | Piotr Zielinski <zielaj> |
---|---|
date | Thu, 07 Jul 2005 15:43:48 +0000 |
parents | df0241eb602c |
children | f54740547c95 |
line wrap: on
line diff
--- a/src/dbus-server.h Thu Jul 07 15:43:05 2005 +0000 +++ b/src/dbus-server.h Thu Jul 07 15:43:48 2005 +0000 @@ -27,8 +27,28 @@ #ifndef _GAIM_DBUS_SERVER_H_ #define _GAIM_DBUS_SERVER_H_ + G_BEGIN_DECLS +/* These are the categories of codes used by gaim dbus implementation + for remote calls. In practice, they don't matter + */ +typedef enum { + DBUS_ERROR_NONE = 0, + DBUS_ERROR_NOT_FOUND = 1 +} DbusErrorCodes; + +/* Types of pointers that can be registered with the gaim dbus pointer + registration engine. See below */ +typedef enum { + DBUS_POINTER_GROUP, + DBUS_POINTER_CONTACT, + DBUS_POINTER_BUDDY, + DBUS_POINTER_CHAT, + DBUS_POINTER_ACCOUNT +} GaimDBusPointerType; + + /** * Starts the gaim DBUS server. It is responsible for handling DBUS * requests from other applications. @@ -37,6 +57,52 @@ */ gboolean dbus_server_init(void); +/** + Initializes gaim dbus pointer registration engine. + + Remote dbus applications need a way of addressing objects exposed + by gaim to the outside world. In gaim itself, these objects (such + as GaimBuddy and company) are identified by pointers. The gaim + dbus pointer registration engine converts pointers to handles and + back. + + In order for an object to participate in the scheme, it must + register itself and its type with the engine. This registration + allocates an integer id which can be resolved to the pointer and + back. + + Handles are not persistent. They are reissued every time gaim is + started. This is not good; external applications that use gaim + should work even whether gaim was restarted in the middle of the + interaction. + + Pointer registration is only a temporary solution. When GaimBuddy + and similar structures have been converted into gobjects, this + registration will be done automatically by objects themselves. + + By the way, this kind of object-handle translation should be so + common that there must be a library (maybe even glib) that + implements it. I feel a bit like reinventing the wheel here. +*/ +void gaim_dbus_init_ids(void); + +/** + Registers a typed pointer. + + @node The pointer to register. + @type Type of that pointer. + */ +void gaim_dbus_register_pointer(gpointer node, GaimDBusPointerType type); + +/** + Unregisters a pointer previously registered with + gaim_dbus_register_pointer. + + @node The pointer to register. + */ +void gaim_dbus_unregister_pointer(gpointer node); + + G_END_DECLS #endif /* _GAIM_DBUS_SERVER_H_ */