diff options
Diffstat (limited to 'src/include/gnunet_common.h')
-rw-r--r-- | src/include/gnunet_common.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/include/gnunet_common.h b/src/include/gnunet_common.h index 2c40aef79..1f5600381 100644 --- a/src/include/gnunet_common.h +++ b/src/include/gnunet_common.h | |||
@@ -319,8 +319,34 @@ struct GNUNET_OperationResultMessage | |||
319 | /* Followed by data. */ | 319 | /* Followed by data. */ |
320 | }; | 320 | }; |
321 | 321 | ||
322 | |||
323 | /** | ||
324 | * Identifier for an asynchronous execution context. | ||
325 | */ | ||
326 | struct GNUNET_AsyncScopeId | ||
327 | { | ||
328 | uint32_t bits[16 / sizeof (uint32_t)]; /* = 16 bytes */ | ||
329 | }; | ||
330 | |||
322 | GNUNET_NETWORK_STRUCT_END | 331 | GNUNET_NETWORK_STRUCT_END |
323 | 332 | ||
333 | |||
334 | /** | ||
335 | * Saved async scope identifier or root scope. | ||
336 | */ | ||
337 | struct GNUNET_AsyncScopeSave { | ||
338 | /** | ||
339 | * Saved scope. Unused if 'have_scope==GNUNET_NO'. | ||
340 | */ | ||
341 | struct GNUNET_AsyncScopeId scope_id; | ||
342 | |||
343 | /** | ||
344 | * GNUNET_YES unless this saved scope is the unnamed root scope. | ||
345 | */ | ||
346 | int have_scope; | ||
347 | }; | ||
348 | |||
349 | |||
324 | /** | 350 | /** |
325 | * Function called with a filename. | 351 | * Function called with a filename. |
326 | * | 352 | * |
@@ -1331,6 +1357,44 @@ struct GNUNET_MessageHeader * | |||
1331 | GNUNET_copy_message (const struct GNUNET_MessageHeader *msg); | 1357 | GNUNET_copy_message (const struct GNUNET_MessageHeader *msg); |
1332 | 1358 | ||
1333 | 1359 | ||
1360 | /** | ||
1361 | * Set the async scope for the current thread. | ||
1362 | * | ||
1363 | * @param aid the async scope identifier | ||
1364 | * @param old_scope[out] location to save the old scope | ||
1365 | */ | ||
1366 | void | ||
1367 | GNUNET_async_scope_enter (const struct GNUNET_AsyncScopeId *aid, | ||
1368 | struct GNUNET_AsyncScopeSave *old_scope); | ||
1369 | |||
1370 | |||
1371 | /** | ||
1372 | * Clear the current thread's async scope. | ||
1373 | * | ||
1374 | * @param old_scope scope to restore | ||
1375 | */ | ||
1376 | void | ||
1377 | GNUNET_async_scope_restore (struct GNUNET_AsyncScopeSave *old_scope); | ||
1378 | |||
1379 | |||
1380 | /** | ||
1381 | * Get the current async scope. | ||
1382 | * | ||
1383 | * @param[out] scope_ret pointer to where the result is stored | ||
1384 | */ | ||
1385 | void | ||
1386 | GNUNET_async_scope_get (struct GNUNET_AsyncScopeSave *scope_ret); | ||
1387 | |||
1388 | |||
1389 | /** | ||
1390 | * Generate a fresh async scope identifier. | ||
1391 | * | ||
1392 | * @param[out] aid_ret pointer to where the result is stored | ||
1393 | */ | ||
1394 | void | ||
1395 | GNUNET_async_scope_fresh (struct GNUNET_AsyncScopeId *aid_ret); | ||
1396 | |||
1397 | |||
1334 | #if __STDC_VERSION__ < 199901L | 1398 | #if __STDC_VERSION__ < 199901L |
1335 | #if __GNUC__ >= 2 | 1399 | #if __GNUC__ >= 2 |
1336 | #define __func__ __FUNCTION__ | 1400 | #define __func__ __FUNCTION__ |