Annotate

util-src/time.c @ 9307:feaef6215bb8

util.stanza: Don't automatically generate ids for iq stanzas Users of this API should provide their own id attribute that meets their uniqueness requirements. The current implementation leaks information (i.e. how many iq stanzas have been sent by the server to other JIDs). Providing any strong guarantees of randomness here would need to pull in additional dependencies that we don't want in this simple library.
author Matthew Wild <mwild1@gmail.com>
date Thu, 13 Sep 2018 16:35:48 +0100
parent 9164:35807f02bdc7
child 9680:a374905e99ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9164
35807f02bdc7 util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents: 9163
diff changeset
1 #ifndef _POSIX_C_SOURCE
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 #define _POSIX_C_SOURCE 199309L
9164
35807f02bdc7 util.time: Allow for already set constant
Kim Alvefur <zash@zash.se>
parents: 9163
diff changeset
3 #endif
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 #include <time.h>
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 #include <lua.h>
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 lua_Number tv2number(struct timespec *tv) {
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 return tv->tv_sec + tv->tv_nsec * 1e-9;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 }
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 int lc_time_realtime(lua_State *L) {
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 struct timespec t;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 clock_gettime(CLOCK_REALTIME, &t);
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 lua_pushnumber(L, tv2number(&t));
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 return 1;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 }
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18
9163
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
19 int lc_time_monotonic(lua_State *L) {
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
20 struct timespec t;
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
21 clock_gettime(CLOCK_MONOTONIC, &t);
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
22 lua_pushnumber(L, tv2number(&t));
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
23 return 1;
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
24 }
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
25
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 int luaopen_util_time(lua_State *L) {
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 lua_createtable(L, 0, 2);
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 {
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 lua_pushcfunction(L, lc_time_realtime);
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 lua_setfield(L, -2, "now");
9163
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
31 lua_pushcfunction(L, lc_time_monotonic);
6b1f46730217 util.time: Add monotonic time
Kim Alvefur <zash@zash.se>
parents: 9162
diff changeset
32 lua_setfield(L, -2, "monotonic");
9162
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 }
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 return 1;
8ad1fe9d26d4 util.time: Convert to C
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 }