aboutsummaryrefslogtreecommitdiff
path: root/src/lib/util/gnunet_time_dbus_lib_push.c
blob: a618278ba643df4fa09b25de890ff2a43d534ddd (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
#include "config.h"

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

#include "gnunet_time_dbus_lib.h"

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

void
GNUNET_TIME_DBUS_push_absolute (
    DBusMessage *message,
    DBusMessageIter *iter,
    const struct GNUNET_TIME_Absolute *value)
{
  LOG (GNUNET_ERROR_TYPE_DEBUG, "Pushing absolute time\n");
  DBusMessageIter iter_sub;
  if (GNUNET_DBUS_message_get_pretty (message))
  {
    LOG (GNUNET_ERROR_TYPE_DEBUG, "Encoding time as string\n");
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_STRING);
    const char *stringified = GNUNET_STRINGS_absolute_time_to_string (*value);
    GNUNET_DBUS_push_string (message, &iter_sub, &stringified);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
  }
  else
  {
    LOG (GNUNET_ERROR_TYPE_DEBUG, "Encoding time as uint64\n");
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_UINT64);
    GNUNET_DBUS_push_uint64 (message, &iter_sub, &value->abs_value_us);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
  }
}

void
GNUNET_TIME_DBUS_push_relative (
    DBusMessage *message,
    DBusMessageIter *iter,
    const struct GNUNET_TIME_Relative *value)
{
  LOG (GNUNET_ERROR_TYPE_DEBUG, "Pushing relative time\n");
  DBusMessageIter iter_sub;
  if (GNUNET_DBUS_message_get_pretty (message))
  {
    LOG (GNUNET_ERROR_TYPE_DEBUG, "Encoding time as string\n");
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_STRING);
    const char *stringified = GNUNET_STRINGS_relative_time_to_string (*value, 0);
    GNUNET_DBUS_push_string (message, &iter_sub, &stringified);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
  }
  else
  {
    LOG (GNUNET_ERROR_TYPE_DEBUG, "Encoding time as uint64\n");
    GNUNET_DBUS_push_open_variant (message, iter, &iter_sub, GNUNET_DBUS_SIGNATURE_UINT64);
    GNUNET_DBUS_push_uint64 (message, &iter_sub, &value->rel_value_us);
    GNUNET_DBUS_push_close_variant (message, iter, &iter_sub);
  }
}