aboutsummaryrefslogtreecommitdiff
path: root/src/stream/stream_api.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-06-21 14:42:54 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-06-21 14:42:54 +0000
commit40c8383cbd3decba4d605d6f94b102a1ed18a825 (patch)
tree11aa480f80b2c6f3630bb4128a0cefed60b173aa /src/stream/stream_api.c
parented2c4e1a48219c6daae03fd161fd311f22afe05f (diff)
downloadgnunet-40c8383cbd3decba4d605d6f94b102a1ed18a825.tar.gz
gnunet-40c8383cbd3decba4d605d6f94b102a1ed18a825.zip
-added stream listen success callback
Diffstat (limited to 'src/stream/stream_api.c')
-rw-r--r--src/stream/stream_api.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/stream/stream_api.c b/src/stream/stream_api.c
index cd89a1de3..f042ccc93 100644
--- a/src/stream/stream_api.c
+++ b/src/stream/stream_api.c
@@ -389,6 +389,11 @@ struct GNUNET_STREAM_ListenSocket
389 struct GNUNET_LOCKMANAGER_LockingRequest *locking_request; 389 struct GNUNET_LOCKMANAGER_LockingRequest *locking_request;
390 390
391 /** 391 /**
392 * Callback to call after acquring a lock and listening
393 */
394 GNUNET_STREAM_ListenSuccessCallback listen_ok_cb;
395
396 /**
392 * The callback function which is called after successful opening socket 397 * The callback function which is called after successful opening socket
393 */ 398 */
394 GNUNET_STREAM_ListenCallback listen_cb; 399 GNUNET_STREAM_ListenCallback listen_cb;
@@ -2873,6 +2878,10 @@ lock_status_change_cb (void *cls, const char *domain, uint32_t lock,
2873 server_message_handlers, 2878 server_message_handlers,
2874 ports); 2879 ports);
2875 GNUNET_assert (NULL != lsocket->mesh); 2880 GNUNET_assert (NULL != lsocket->mesh);
2881 if (NULL != lsocket->listen_ok_cb)
2882 {
2883 (void) lsocket->listen_ok_cb ();
2884 }
2876 } 2885 }
2877 } 2886 }
2878 if (GNUNET_LOCKMANAGER_RELEASE == status) 2887 if (GNUNET_LOCKMANAGER_RELEASE == status)
@@ -2939,6 +2948,9 @@ GNUNET_STREAM_open (const struct GNUNET_CONFIGURATION_Handle *cfg,
2939 case GNUNET_STREAM_OPTION_LISTEN_TIMEOUT: 2948 case GNUNET_STREAM_OPTION_LISTEN_TIMEOUT:
2940 GNUNET_break (0); /* Option irrelevant in STREAM_open */ 2949 GNUNET_break (0); /* Option irrelevant in STREAM_open */
2941 break; 2950 break;
2951 case GNUNET_STREAM_OPTION_SIGNAL_LISTEN_SUCCESS:
2952 GNUNET_break (0); /* Option irrelevant in STREAM_open */
2953 break;
2942 case GNUNET_STREAM_OPTION_END: 2954 case GNUNET_STREAM_OPTION_END:
2943 break; 2955 break;
2944 } 2956 }
@@ -3200,7 +3212,8 @@ GNUNET_STREAM_listen (const struct GNUNET_CONFIGURATION_Handle *cfg,
3200 lsocket->retransmit_timeout = 3212 lsocket->retransmit_timeout =
3201 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, default_timeout); 3213 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, default_timeout);
3202 lsocket->testing_active = GNUNET_NO; 3214 lsocket->testing_active = GNUNET_NO;
3203 listen_timeout = TIME_REL_SECS (60); /* A minute for listen timeout */ 3215 lsocket->listen_ok_cb = NULL;
3216 listen_timeout = TIME_REL_SECS (60); /* A minute for listen timeout */
3204 va_start (vargs, listen_cb_cls); 3217 va_start (vargs, listen_cb_cls);
3205 do { 3218 do {
3206 option = va_arg (vargs, enum GNUNET_STREAM_Option); 3219 option = va_arg (vargs, enum GNUNET_STREAM_Option);
@@ -3219,6 +3232,10 @@ GNUNET_STREAM_listen (const struct GNUNET_CONFIGURATION_Handle *cfg,
3219 listen_timeout = GNUNET_TIME_relative_multiply 3232 listen_timeout = GNUNET_TIME_relative_multiply
3220 (GNUNET_TIME_UNIT_MILLISECONDS, va_arg (vargs, uint32_t)); 3233 (GNUNET_TIME_UNIT_MILLISECONDS, va_arg (vargs, uint32_t));
3221 break; 3234 break;
3235 case GNUNET_STREAM_OPTION_SIGNAL_LISTEN_SUCCESS:
3236 lsocket->listen_ok_cb = va_arg (vargs,
3237 GNUNET_STREAM_ListenSuccessCallback);
3238 break;
3222 case GNUNET_STREAM_OPTION_END: 3239 case GNUNET_STREAM_OPTION_END:
3223 break; 3240 break;
3224 } 3241 }