aboutsummaryrefslogtreecommitdiff
path: root/src/lib/common/gnunet_dbus_lib_message.c
blob: 1d76f847a4b4468505ec870c9e51ae2a1cf37597 (plain) (blame)
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
#include "config.h"

#include <gnunet/platform.h>
#include <gnunet/gnunet_common.h>

#include "gnunet_dbus_lib_message.h"

#define LOG(kind, ...) GNUNET_log_from (kind, "dbus-message", __VA_ARGS__)

static dbus_int32_t
pretty_slot_id ()
{
  static dbus_int32_t id = -1;
  if (-1 == id)
  {
    dbus_bool_t succ = dbus_message_allocate_data_slot (&id);
    if (! succ || -1 == id)
    {
      LOG (GNUNET_ERROR_TYPE_ERROR, "dbus_message_allocate_data_slot failed. id == %lld\n", (long long)id);
      GNUNET_abort_ ();
    };
  };

  return id;
};

bool
GNUNET_DBUS_message_get_pretty (
    DBusMessage *message)
{
  return (bool)dbus_message_get_data (message, pretty_slot_id ());
}

void
GNUNET_DBUS_message_set_pretty (
    DBusMessage *message,
    bool pretty)
{
  dbus_int32_t id = pretty_slot_id ();
  bool succ = dbus_message_set_data (message, id, (void *)pretty, NULL);
  if (! succ)
  {
    LOG (GNUNET_ERROR_TYPE_ERROR, "dbus_message_set_data failed. id == %lld\n", (long long)id);
    GNUNET_abort_ ();
  };
};

void
GNUNET_DBUS_message_set_destination (
    DBusMessage *message,
    struct GNUNET_DBUS_Client *client)
{
  dbus_message_set_destination (message, GNUNET_DBUS_client_get_unique_name (client));
}

void
GNUNET_DBUS_message_unset_destination (
    DBusMessage *message)
{
  dbus_message_set_destination (message, NULL);
}