diff options
Diffstat (limited to 'src/messenger/gnunet-service-messenger_member_session.c')
-rw-r--r-- | src/messenger/gnunet-service-messenger_member_session.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/messenger/gnunet-service-messenger_member_session.c b/src/messenger/gnunet-service-messenger_member_session.c index 2e6eae59e..690c703b2 100644 --- a/src/messenger/gnunet-service-messenger_member_session.c +++ b/src/messenger/gnunet-service-messenger_member_session.c | |||
@@ -71,6 +71,8 @@ create_member_session (struct GNUNET_MESSENGER_Member *member, | |||
71 | session->prev = NULL; | 71 | session->prev = NULL; |
72 | session->next = NULL; | 72 | session->next = NULL; |
73 | 73 | ||
74 | session->start = GNUNET_TIME_absolute_get(); | ||
75 | |||
74 | session->closed = GNUNET_NO; | 76 | session->closed = GNUNET_NO; |
75 | session->completed = GNUNET_NO; | 77 | session->completed = GNUNET_NO; |
76 | 78 | ||
@@ -226,6 +228,8 @@ switch_member_session (struct GNUNET_MESSENGER_MemberSession *session, | |||
226 | next->prev = session; | 228 | next->prev = session; |
227 | next->next = NULL; | 229 | next->next = NULL; |
228 | 230 | ||
231 | next->start = GNUNET_TIME_absolute_get(); | ||
232 | |||
229 | session->closed = GNUNET_YES; | 233 | session->closed = GNUNET_YES; |
230 | next->closed = GNUNET_NO; | 234 | next->closed = GNUNET_NO; |
231 | next->completed = GNUNET_NO; | 235 | next->completed = GNUNET_NO; |
@@ -314,6 +318,17 @@ is_member_session_completed (const struct GNUNET_MESSENGER_MemberSession* sessio | |||
314 | return session->completed; | 318 | return session->completed; |
315 | } | 319 | } |
316 | 320 | ||
321 | struct GNUNET_TIME_Absolute | ||
322 | get_member_session_start (const struct GNUNET_MESSENGER_MemberSession* session) | ||
323 | { | ||
324 | GNUNET_assert(session); | ||
325 | |||
326 | if (session->prev) | ||
327 | return get_member_session_start(session->prev); | ||
328 | |||
329 | return session->start; | ||
330 | } | ||
331 | |||
317 | const struct GNUNET_HashCode* | 332 | const struct GNUNET_HashCode* |
318 | get_member_session_key (const struct GNUNET_MESSENGER_MemberSession* session) | 333 | get_member_session_key (const struct GNUNET_MESSENGER_MemberSession* session) |
319 | { | 334 | { |
@@ -521,6 +536,9 @@ load_member_session (struct GNUNET_MESSENGER_Member *member, const char *directo | |||
521 | 536 | ||
522 | unsigned long long numeric_value; | 537 | unsigned long long numeric_value; |
523 | 538 | ||
539 | if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, "session", "start", &numeric_value)) | ||
540 | session->start.abs_value_us = numeric_value; | ||
541 | |||
524 | if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, "session", "closed", &numeric_value)) | 542 | if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, "session", "closed", &numeric_value)) |
525 | session->closed = (GNUNET_YES == numeric_value? GNUNET_YES : GNUNET_NO); | 543 | session->closed = (GNUNET_YES == numeric_value? GNUNET_YES : GNUNET_NO); |
526 | 544 | ||
@@ -701,6 +719,8 @@ save_member_session (struct GNUNET_MESSENGER_MemberSession *session, const char | |||
701 | } | 719 | } |
702 | } | 720 | } |
703 | 721 | ||
722 | GNUNET_CONFIGURATION_set_value_number(cfg, "session", "start", session->start.abs_value_us); | ||
723 | |||
704 | GNUNET_CONFIGURATION_set_value_number (cfg, "session", "closed", session->closed); | 724 | GNUNET_CONFIGURATION_set_value_number (cfg, "session", "closed", session->closed); |
705 | GNUNET_CONFIGURATION_set_value_number (cfg, "session", "completed", session->completed); | 725 | GNUNET_CONFIGURATION_set_value_number (cfg, "session", "completed", session->completed); |
706 | 726 | ||