aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/gnunet-service-messenger_member_session.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/gnunet-service-messenger_member_session.c')
-rw-r--r--src/messenger/gnunet-service-messenger_member_session.c20
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
321struct GNUNET_TIME_Absolute
322get_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
317const struct GNUNET_HashCode* 332const struct GNUNET_HashCode*
318get_member_session_key (const struct GNUNET_MESSENGER_MemberSession* session) 333get_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