aboutsummaryrefslogtreecommitdiff
path: root/src/lib/util/gnunet_time_dbus_lib_pop.c
diff options
context:
space:
mode:
authorng0 <ng0@n0.is>2019-11-26 15:27:42 +0000
committerng0 <ng0@n0.is>2019-11-26 15:29:01 +0000
commit3a9559be89f5992a6e0b8980f6b40ddce7ffef07 (patch)
tree15ba0d00a0c994e7766020e9b20b6f0ea26cd054 /src/lib/util/gnunet_time_dbus_lib_pop.c
downloadgnunet-dbus-default.tar.gz
gnunet-dbus-default.zip
init gnunet-dbus from SVN snapshot (restore lost data after crash).default
Diffstat (limited to 'src/lib/util/gnunet_time_dbus_lib_pop.c')
-rw-r--r--src/lib/util/gnunet_time_dbus_lib_pop.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lib/util/gnunet_time_dbus_lib_pop.c b/src/lib/util/gnunet_time_dbus_lib_pop.c
new file mode 100644
index 0000000..10322c6
--- /dev/null
+++ b/src/lib/util/gnunet_time_dbus_lib_pop.c
@@ -0,0 +1,52 @@
1#include "config.h"
2
3#include <gnunet/platform.h>
4#include <gnunet/gnunet_common.h>
5#include <gnunet/gnunet_strings_lib.h>
6
7#include "gnunet_time_dbus_lib.h"
8
9DBusMessage *
10GNUNET_TIME_DBUS_pop_absolute (
11 DBusMessage *message,
12 DBusMessageIter *iter,
13 const char *arg_name,
14 struct GNUNET_TIME_Absolute *value)
15{
16 DBusMessageIter iter_sub;
17 DBusMessage *ret = GNUNET_DBUS_pop_enter_variant (message, iter, &iter_sub, arg_name);
18 if (ret)
19 return ret;
20
21 int arg_type = dbus_message_iter_get_arg_type (&iter_sub);
22 switch (arg_type)
23 {
24 case DBUS_TYPE_STRING: {
25 const char *time;
26 dbus_message_iter_get_basic (&iter_sub, &time);
27 int err = GNUNET_STRINGS_fancy_time_to_absolute (time, value);
28 if (GNUNET_OK != err)
29 {
30 return dbus_message_new_error_printf (
31 message,
32 DBUS_ERROR_INVALID_ARGS,
33 "Bad argument for '%s'. Malformed time string. GNUNET_STRINGS_fancy_time_to_absolute returned %d",
34 arg_name,
35 err);
36 };
37 return NULL;
38 };
39 case DBUS_TYPE_UINT64:
40 dbus_message_iter_get_basic (&iter_sub, &value->abs_value_us);
41 return NULL;
42 default:
43 return dbus_message_new_error_printf (
44 message,
45 DBUS_ERROR_INVALID_ARGS,
46 "Bad argument for '%s'. Variant must contain a time encoded as a human readable string or a uint64 representing the number of microseconds since epoch. Contains %s.",
47 arg_name,
48 GNUNET_DBUS_signature_typecode_to_string (arg_type));
49 };
50};
51
52