summaryrefslogtreecommitdiff
path: root/libnul-private.h
blob: 7925d8c2670ca7cca0552f3a3f2355e23c22a841 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "libnul.h"

typedef struct connection_t  connection_t;
typedef struct message_t     message_t;
typedef struct typed_value_t typed_value_t;
typedef union  value_t       value_t;

typedef gboolean (* message_func_t) (connection_t   *connection,
				     DBusMessage    *message,
				     nul_ptr_t       data);

typedef enum
{
    INT32,
    UINT32,
    STRING
} primitive_t;

union value_t
{
    int32_t i32;
    uint32_t u32;
    double d;
    char *s;
};

struct typed_value_t
{
    primitive_t  type;

    value_t value;
};

struct message_t
{
    char                *service;
    char		*path;
    char		*interface;
    char		*member;
    
    typed_value_t	*arguments;
};

connection_t *connection_new_session       (void);
connection_t *connection_new_system        (void);
void          connection_register_object   (connection_t   *connection,
					    const char     *object_name,
					    message_func_t  func,
					    nul_ptr_t       data);
void          connection_unregister_object (connection_t   *connection,
					    const char     *object_name);
gboolean      connection_request_name      (connection_t   *connection,
					    const char     *name);
void          connection_send              (connection_t   *connection,
					    DBusMessage    *message);
gboolean      connection_send_with_reply   (connection_t   *connection,
					    DBusMessage    *message,
					    message_func_t  func,
					    gpointer        data);
void          connection_release_name      (connection_t   *connection,
					    const char     *name);

message_t *message_new_error       (const message_t  *in_reply_to,
				    const char      **message);
message_t *message_new_return      (const message_t  *in_reply_to);
message_t *message_new_method_call (const char       *service_name,
				    const char       *object_name,
				    const char       *interface_name,
				    const char       *method_name);
void       message_append_string   (message_t        *message,
				    const char       *string);
void       message_append_int32    (message_t        *message,
				    int               value);
void       message_append_uint32   (message_t        *message,
				    uint32_t          value);
void       message_free            (message_t        *mesage);