efl/legacy/ecore/src/lib/ecore_dbus/Ecore_DBus.h

224 lines
8.5 KiB
C

/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#ifndef _ECORE_DBUS_H
#define _ECORE_DBUS_H
#include "Ecore_Data.h"
#include "Ecore_Con.h"
#ifdef EAPI
#undef EAPI
#endif
#ifdef WIN32
# ifdef BUILDING_DLL
# define EAPI __declspec(dllexport)
# else
# define EAPI __declspec(dllimport)
# endif
#else
# ifdef __GNUC__
# if __GNUC__ >= 4
# define EAPI __attribute__ ((visibility("default")))
# else
# define EAPI
# endif
# else
# define EAPI
# endif
#endif
#define ECORE_DBUS_MAJOR_PROTOCOL_VERSION 0x1
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _Ecore_DBus_Server Ecore_DBus_Server;
typedef struct _Ecore_DBus_Event_Server_Add Ecore_DBus_Event_Server_Add;
typedef struct _Ecore_DBus_Event_Server_Del Ecore_DBus_Event_Server_Del;
typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Event_Server_Data;
typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Event_Signal;
typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Event_Method_Call;
typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Method_Return;
typedef struct _Ecore_DBus_Message Ecore_DBus_Message;
typedef struct _Ecore_DBus_Message_Arg Ecore_DBus_Message_Arg;
typedef struct _Ecore_DBus_Message_Field Ecore_DBus_Message_Field;
typedef struct _Ecore_DBus_Address Ecore_DBus_Address;
typedef enum _Ecore_DBus_Message_Type
{
ECORE_DBUS_MESSAGE_TYPE_INVALID,
ECORE_DBUS_MESSAGE_TYPE_METHOD_CALL,
ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN,
ECORE_DBUS_MESSAGE_TYPE_ERROR,
ECORE_DBUS_MESSAGE_TYPE_SIGNAL
} Ecore_DBus_Message_Type;
typedef enum _Ecore_DBus_Message_Flag
{
ECORE_DBUS_MESSAGE_FLAG_NO_REPLY_EXPECTED,
ECORE_DBUS_MESSAGE_FLAG_NO_AUTO_START
} Ecore_DBus_Message_Flag;
typedef enum _Ecore_DBus_Data_Type
{
ECORE_DBUS_DATA_TYPE_INVALID = ((int) '\0'),
ECORE_DBUS_DATA_TYPE_BYTE = ((int) 'y'),
ECORE_DBUS_DATA_TYPE_BOOLEAN = ((int) 'b'), /* 0,1 */
ECORE_DBUS_DATA_TYPE_INT16 = ((int) 'n'),
ECORE_DBUS_DATA_TYPE_UINT16 = ((int) 'q'),
ECORE_DBUS_DATA_TYPE_INT32 = ((int) 'i'),
ECORE_DBUS_DATA_TYPE_UINT32 = ((int) 'u'),
ECORE_DBUS_DATA_TYPE_INT64 = ((int) 'x'),
ECORE_DBUS_DATA_TYPE_UINT64 = ((int) 't'),
ECORE_DBUS_DATA_TYPE_DOUBLE = ((int) 'd'),
ECORE_DBUS_DATA_TYPE_STRING = ((int) 's'),
ECORE_DBUS_DATA_TYPE_OBJECT_PATH = ((int) 'o'),
ECORE_DBUS_DATA_TYPE_SIGNATURE = ((int) 'g'),
ECORE_DBUS_DATA_TYPE_ARRAY = ((int) 'a'),
ECORE_DBUS_DATA_TYPE_VARIANT = ((int) 'v'),
ECORE_DBUS_DATA_TYPE_STRUCT = ((int) 'r'),
ECORE_DBUS_DATA_TYPE_STRUCT_BEGIN = ((int) '('),
ECORE_DBUS_DATA_TYPE_STRUCT_END = ((int) ')'),
ECORE_DBUS_DATA_TYPE_DICT_ENTRY = ((int) 'e'),
ECORE_DBUS_DATA_TYPE_DICT_ENTRY_BEGIN = ((int) '{'),
ECORE_DBUS_DATA_TYPE_DICT_ENTRY_END = ((int) '}'),
} Ecore_DBus_Data_Type;
struct _Ecore_DBus_Event_Server_Add
{
Ecore_DBus_Server *server;
};
struct _Ecore_DBus_Event_Server_Del
{
Ecore_DBus_Server *server;
};
struct _Ecore_DBus_Event_Server_Data
{
Ecore_DBus_Server *server;
Ecore_DBus_Message_Type type;
Ecore_DBus_Message *message;
struct {
const char *path;
const char *interface;
const char *member;
const char *error_name;
unsigned int reply_serial;
const char *destination;
const char *sender;
const char *signature;
} header;
Ecore_DBus_Message_Arg *args;
};
struct _Ecore_DBus_Message_Arg
{
Ecore_DBus_Data_Type type;
void *value;
};
typedef enum _Ecore_DBus_Message_Header_Field
{
ECORE_DBUS_HEADER_FIELD_INVALID,
ECORE_DBUS_HEADER_FIELD_PATH,
ECORE_DBUS_HEADER_FIELD_INTERFACE,
ECORE_DBUS_HEADER_FIELD_MEMBER,
ECORE_DBUS_HEADER_FIELD_ERROR_NAME,
ECORE_DBUS_HEADER_FIELD_REPLY_SERIAL,
ECORE_DBUS_HEADER_FIELD_DESTINATION,
ECORE_DBUS_HEADER_FIELD_SENDER,
ECORE_DBUS_HEADER_FIELD_SIGNATURE
} Ecore_DBus_Message_Header_Field;
struct _Ecore_DBus_Address
{
char *transport;
Ecore_List *keys;
Ecore_List *vals;
};
EAPI extern int ECORE_DBUS_EVENT_SERVER_ADD;
EAPI extern int ECORE_DBUS_EVENT_SERVER_DEL;
EAPI extern int ECORE_DBUS_EVENT_METHOD_CALL;
EAPI extern int ECORE_DBUS_EVENT_SIGNAL;
/* callback */
typedef void (*Ecore_DBus_Method_Return_Cb)(void *data, Ecore_DBus_Method_Return *reply);
typedef void (*Ecore_DBus_Error_Cb)(void *data, const char *error);
/* init */
EAPI int ecore_dbus_init(void);
EAPI int ecore_dbus_shutdown(void);
/* connection */
EAPI Ecore_DBus_Server *ecore_dbus_server_system_connect(const void *data);
EAPI Ecore_DBus_Server *ecore_dbus_server_session_connect(const void *data);
EAPI Ecore_DBus_Server *ecore_dbus_server_starter_connect(const void *data);
EAPI Ecore_DBus_Server *ecore_dbus_server_connect(Ecore_Con_Type type, const char *name, int port, const void *data);
EAPI void ecore_dbus_server_del(Ecore_DBus_Server *svr);
/* message */
EAPI int ecore_dbus_server_send(Ecore_DBus_Server *svr, char *command, int length);
EAPI unsigned int ecore_dbus_message_new_method_call(Ecore_DBus_Server *svr,
char *path, char *interface,
char *method, char *destination,
Ecore_DBus_Method_Return_Cb method_cb,
Ecore_DBus_Error_Cb error_cb,
void *data,
char *signature, ...);
EAPI unsigned int ecore_dbus_message_new_method_return(Ecore_DBus_Server *svr,
int reply_serial, char *destination,
char *signature, ...);
EAPI unsigned int ecore_dbus_message_new_error(Ecore_DBus_Server *svr,
char *error_name,
int reply_serial, char *destination,
char *signature, ...);
EAPI unsigned int ecore_dbus_message_new_signal(Ecore_DBus_Server *svr,
char *path,
char *interface, char *signal_name,
char *destination, void *data,
char *signature, ...);
EAPI void ecore_dbus_message_del(Ecore_DBus_Message *msg);
EAPI void ecore_dbus_message_print(Ecore_DBus_Message *msg);
EAPI void *ecore_dbus_message_header_field_get(Ecore_DBus_Message *msg, Ecore_DBus_Message_Header_Field field);
EAPI void *ecore_dbus_message_body_field_get(Ecore_DBus_Message *msg, unsigned int pos);
/* methods */
EAPI int ecore_dbus_method_hello(Ecore_DBus_Server *svr, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_list_names(Ecore_DBus_Server *svr, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_name_has_owner(Ecore_DBus_Server *svr, char *name, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_start_service_by_name(Ecore_DBus_Server *svr, char *name, unsigned int flags, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_get_name_owner(Ecore_DBus_Server *svr, char *name, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_get_connection_unix_user(Ecore_DBus_Server *svr, char *connection, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_add_match(Ecore_DBus_Server *svr, char *match, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_remove_match(Ecore_DBus_Server *svr, char *match, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_request_name(Ecore_DBus_Server *svr, char *name, int flags, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
EAPI int ecore_dbus_method_release_name(Ecore_DBus_Server *svr, char *name, Ecore_DBus_Method_Return_Cb method_cb, Ecore_DBus_Error_Cb, void *data);
/* addresses */
EAPI Ecore_DBus_Address *ecore_dbus_address_new();
EAPI void ecore_dbus_address_free(Ecore_DBus_Address *address);
EAPI Ecore_List *ecore_dbus_address_parse(const char *address);
EAPI char *ecore_dbus_address_value_get(Ecore_DBus_Address *address,
char *key);
EAPI void ecore_dbus_print_address_list(Ecore_List *addresses);
EAPI Ecore_DBus_Server *ecore_dbus_address_list_connect(Ecore_List *addrs, const void *data);
EAPI Ecore_DBus_Server *ecore_dbus_address_connect(Ecore_DBus_Address *addr, const void *data);
#ifdef __cplusplus
}
#endif
#endif