aboutsummaryrefslogtreecommitdiff
path: root/src/include/gnunet_multicast_service.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/gnunet_multicast_service.h')
-rw-r--r--src/include/gnunet_multicast_service.h114
1 files changed, 57 insertions, 57 deletions
diff --git a/src/include/gnunet_multicast_service.h b/src/include/gnunet_multicast_service.h
index ec446a906..7a2421b4b 100644
--- a/src/include/gnunet_multicast_service.h
+++ b/src/include/gnunet_multicast_service.h
@@ -18,7 +18,7 @@
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/** 21/**
22 * @file include/gnunet_multicast_service.h 22 * @file include/gnunet_multicast_service.h
23 * @brief multicast service; establish tunnels to distant peers 23 * @brief multicast service; establish tunnels to distant peers
24 * @author Christian Grothoff 24 * @author Christian Grothoff
@@ -39,7 +39,7 @@ extern "C"
39#include "gnunet_util_lib.h" 39#include "gnunet_util_lib.h"
40#include "gnunet_transport_service.h" 40#include "gnunet_transport_service.h"
41 41
42/** 42/**
43 * Version number of GNUnet-multicast API. 43 * Version number of GNUnet-multicast API.
44 */ 44 */
45#define GNUNET_MULTICAST_VERSION 0x00000000 45#define GNUNET_MULTICAST_VERSION 0x00000000
@@ -49,12 +49,12 @@ extern "C"
49 */ 49 */
50#define GNUNET_MULTICAST_FRAGMENT_MAX_SIZE 63 * 1024 50#define GNUNET_MULTICAST_FRAGMENT_MAX_SIZE 63 * 1024
51 51
52/** 52/**
53 * Opaque handle for a multicast group member. 53 * Opaque handle for a multicast group member.
54 */ 54 */
55struct GNUNET_MULTICAST_Member; 55struct GNUNET_MULTICAST_Member;
56 56
57/** 57/**
58 * Handle for the origin of a multicast group. 58 * Handle for the origin of a multicast group.
59 */ 59 */
60struct GNUNET_MULTICAST_Origin; 60struct GNUNET_MULTICAST_Origin;
@@ -72,7 +72,7 @@ enum GNUNET_MULTICAST_MessageFlags
72 */ 72 */
73 GNUNET_MULTICAST_MESSAGE_LAST_FRAGMENT = 1 << 1, 73 GNUNET_MULTICAST_MESSAGE_LAST_FRAGMENT = 1 << 1,
74 74
75 /** 75 /**
76 * OR'ed flags if message is not fragmented. 76 * OR'ed flags if message is not fragmented.
77 */ 77 */
78 GNUNET_MULTICAST_MESSAGE_NOT_FRAGMENTED 78 GNUNET_MULTICAST_MESSAGE_NOT_FRAGMENTED
@@ -83,7 +83,7 @@ enum GNUNET_MULTICAST_MessageFlags
83 83
84GNUNET_NETWORK_STRUCT_BEGIN 84GNUNET_NETWORK_STRUCT_BEGIN
85 85
86/** 86/**
87 * Header of a multicast message fragment. 87 * Header of a multicast message fragment.
88 * 88 *
89 * This format is public as the replay mechanism must replay message fragments using the 89 * This format is public as the replay mechanism must replay message fragments using the
@@ -93,12 +93,12 @@ GNUNET_NETWORK_STRUCT_BEGIN
93struct GNUNET_MULTICAST_MessageHeader 93struct GNUNET_MULTICAST_MessageHeader
94{ 94{
95 95
96 /** 96 /**
97 * Header for all multicast message fragments from the origin. 97 * Header for all multicast message fragments from the origin.
98 */ 98 */
99 struct GNUNET_MessageHeader header; 99 struct GNUNET_MessageHeader header;
100 100
101 /** 101 /**
102 * Number of hops this message fragment has taken since the origin. 102 * Number of hops this message fragment has taken since the origin.
103 * 103 *
104 * Helpful to determine shortest paths to the origin among honest peers for 104 * Helpful to determine shortest paths to the origin among honest peers for
@@ -107,36 +107,36 @@ struct GNUNET_MULTICAST_MessageHeader
107 */ 107 */
108 uint32_t hop_counter GNUNET_PACKED; 108 uint32_t hop_counter GNUNET_PACKED;
109 109
110 /** 110 /**
111 * ECC signature of the message fragment. 111 * ECC signature of the message fragment.
112 * 112 *
113 * Signature must match the public key of the multicast group. 113 * Signature must match the public key of the multicast group.
114 */ 114 */
115 struct GNUNET_CRYPTO_EccSignature signature; 115 struct GNUNET_CRYPTO_EccSignature signature;
116 116
117 /** 117 /**
118 * Purpose for the signature and size of the signed data. 118 * Purpose for the signature and size of the signed data.
119 */ 119 */
120 struct GNUNET_CRYPTO_EccSignaturePurpose purpose; 120 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
121 121
122 /** 122 /**
123 * Number of the message fragment, monotonically increasing. 123 * Number of the message fragment, monotonically increasing.
124 */ 124 */
125 uint64_t fragment_id GNUNET_PACKED; 125 uint64_t fragment_id GNUNET_PACKED;
126 126
127 /** 127 /**
128 * Byte offset of this @e fragment of the @e message. 128 * Byte offset of this @e fragment of the @e message.
129 */ 129 */
130 uint64_t fragment_offset GNUNET_PACKED; 130 uint64_t fragment_offset GNUNET_PACKED;
131 131
132 /** 132 /**
133 * Number of the message this fragment belongs to. 133 * Number of the message this fragment belongs to.
134 * 134 *
135 * Set in GNUNET_MULTICAST_origin_to_all(). 135 * Set in GNUNET_MULTICAST_origin_to_all().
136 */ 136 */
137 uint64_t message_id GNUNET_PACKED; 137 uint64_t message_id GNUNET_PACKED;
138 138
139 /** 139 /**
140 * Counter that monotonically increases whenever a member parts the group. 140 * Counter that monotonically increases whenever a member parts the group.
141 * 141 *
142 * Set in GNUNET_MULTICAST_origin_to_all(). 142 * Set in GNUNET_MULTICAST_origin_to_all().
@@ -159,7 +159,7 @@ struct GNUNET_MULTICAST_MessageHeader
159GNUNET_NETWORK_STRUCT_END 159GNUNET_NETWORK_STRUCT_END
160 160
161 161
162/** 162/**
163 * Handle that identifies a join request. 163 * Handle that identifies a join request.
164 * 164 *
165 * Used to match calls to #GNUNET_MULTICAST_JoinCallback to the 165 * Used to match calls to #GNUNET_MULTICAST_JoinCallback to the
@@ -168,7 +168,7 @@ GNUNET_NETWORK_STRUCT_END
168struct GNUNET_MULTICAST_JoinHandle; 168struct GNUNET_MULTICAST_JoinHandle;
169 169
170 170
171/** 171/**
172 * Function to call with the decision made for a join request. 172 * Function to call with the decision made for a join request.
173 * 173 *
174 * Must be called once and only once in response to an invocation of the 174 * Must be called once and only once in response to an invocation of the
@@ -198,7 +198,7 @@ GNUNET_MULTICAST_join_decision (struct GNUNET_MULTICAST_JoinHandle *jh,
198 const struct GNUNET_MessageHeader *join_response); 198 const struct GNUNET_MessageHeader *join_response);
199 199
200 200
201/** 201/**
202 * Method called whenever another peer wants to join the multicast group. 202 * Method called whenever another peer wants to join the multicast group.
203 * 203 *
204 * Implementations of this function must call GNUNET_MULTICAST_join_decision() 204 * Implementations of this function must call GNUNET_MULTICAST_join_decision()
@@ -219,13 +219,13 @@ typedef void
219 struct GNUNET_MULTICAST_JoinHandle *jh); 219 struct GNUNET_MULTICAST_JoinHandle *jh);
220 220
221 221
222/** 222/**
223 * Handle to pass back for the answer of a membership test. 223 * Handle to pass back for the answer of a membership test.
224 */ 224 */
225struct GNUNET_MULTICAST_MembershipTestHandle; 225struct GNUNET_MULTICAST_MembershipTestHandle;
226 226
227 227
228/** 228/**
229 * Call informing multicast about the decision taken for a membership test. 229 * Call informing multicast about the decision taken for a membership test.
230 * 230 *
231 * @param mth Handle that was given for the query. 231 * @param mth Handle that was given for the query.
@@ -237,7 +237,7 @@ GNUNET_MULTICAST_membership_test_result (struct GNUNET_MULTICAST_MembershipTestH
237 int result); 237 int result);
238 238
239 239
240/** 240/**
241 * Method called to test if a member was in the group at a particular time. 241 * Method called to test if a member was in the group at a particular time.
242 * 242 *
243 * It is called when a replay request is received to determine if the requested 243 * It is called when a replay request is received to determine if the requested
@@ -259,14 +259,14 @@ typedef void
259 struct GNUNET_MULTICAST_MembershipTestHandle *mth); 259 struct GNUNET_MULTICAST_MembershipTestHandle *mth);
260 260
261 261
262/** 262/**
263 * Function called whenever a group member has transmitted a request 263 * Function called whenever a group member has transmitted a request
264 * to the origin (other than joining or leaving). 264 * to the origin (other than joining or leaving).
265 * 265 *
266 * FIXME: need to distinguish between origin cancelling a message (some fragments 266 * FIXME: need to distinguish between origin cancelling a message (some fragments
267 * were sent, then the rest 'discarded') and the case where we got disconnected; 267 * were sent, then the rest 'discarded') and the case where we got disconnected;
268 * right now, both would mean 'msg' is NULL, but they could be quite different... 268 * right now, both would mean 'msg' is NULL, but they could be quite different...
269 * So the semantics from the receiver side of 269 * So the semantics from the receiver side of
270 * GNUNET_MULTICAST_member_to_origin_cancel() are not clear here. Maybe we 270 * GNUNET_MULTICAST_member_to_origin_cancel() are not clear here. Maybe we
271 * should do something with the flags in this case? 271 * should do something with the flags in this case?
272 * 272 *
@@ -282,7 +282,7 @@ typedef void
282 enum GNUNET_MULTICAST_MessageFlags flags); 282 enum GNUNET_MULTICAST_MessageFlags flags);
283 283
284 284
285/** 285/**
286 * Function called whenever a group member is receiving a message fragment from 286 * Function called whenever a group member is receiving a message fragment from
287 * the origin. 287 * the origin.
288 * 288 *
@@ -293,7 +293,7 @@ typedef void
293 * FIXME: need to distinguish between origin cancelling a message (some fragments 293 * FIXME: need to distinguish between origin cancelling a message (some fragments
294 * were sent, then the rest 'discarded') and the case where we got disconnected; 294 * were sent, then the rest 'discarded') and the case where we got disconnected;
295 * right now, both would mean 'msg' is NULL, but they could be quite different... 295 * right now, both would mean 'msg' is NULL, but they could be quite different...
296 * So the semantics from the receiver side of 296 * So the semantics from the receiver side of
297 * GNUNET_MULTICAST_origin_to_all_cancel() are not clear here. 297 * GNUNET_MULTICAST_origin_to_all_cancel() are not clear here.
298 * 298 *
299 * @param cls Closure (set from GNUNET_MULTICAST_member_join()) 299 * @param cls Closure (set from GNUNET_MULTICAST_member_join())
@@ -306,11 +306,11 @@ typedef void
306 const struct GNUNET_MessageHeader *msg); 306 const struct GNUNET_MessageHeader *msg);
307 307
308 308
309/** 309/**
310 * Function called with the result of an asynchronous operation. 310 * Function called with the result of an asynchronous operation.
311 * 311 *
312 * @see GNUNET_MULTICAST_replay_fragment() 312 * @see GNUNET_MULTICAST_replay_fragment()
313 * 313 *
314 * @param result Result of the operation. 314 * @param result Result of the operation.
315 */ 315 */
316typedef void 316typedef void
@@ -318,13 +318,13 @@ typedef void
318 int result); 318 int result);
319 319
320 320
321/** 321/**
322 * Opaque handle to a replay request from the multicast service. 322 * Opaque handle to a replay request from the multicast service.
323 */ 323 */
324struct GNUNET_MULTICAST_ReplayHandle; 324struct GNUNET_MULTICAST_ReplayHandle;
325 325
326 326
327/** 327/**
328 * Functions with this signature are called whenever the multicast service needs 328 * Functions with this signature are called whenever the multicast service needs
329 * a message fragment to be replayed by fragment_id. 329 * a message fragment to be replayed by fragment_id.
330 * 330 *
@@ -346,7 +346,7 @@ typedef void
346 uint64_t flags, 346 uint64_t flags,
347 struct GNUNET_MULTICAST_ReplayHandle *rh); 347 struct GNUNET_MULTICAST_ReplayHandle *rh);
348 348
349/** 349/**
350 * Functions with this signature are called whenever the multicast service needs 350 * Functions with this signature are called whenever the multicast service needs
351 * a message fragment to be replayed by message_id and fragment_offset. 351 * a message fragment to be replayed by message_id and fragment_offset.
352 * 352 *
@@ -371,18 +371,18 @@ typedef void
371 struct GNUNET_MULTICAST_ReplayHandle *rh); 371 struct GNUNET_MULTICAST_ReplayHandle *rh);
372 372
373 373
374/** 374/**
375 * Possible error codes during replay. 375 * Possible error codes during replay.
376 */ 376 */
377enum GNUNET_MULTICAST_ReplayErrorCode 377enum GNUNET_MULTICAST_ReplayErrorCode
378{ 378{
379 379
380 /** 380 /**
381 * Everything is fine. 381 * Everything is fine.
382 */ 382 */
383 GNUNET_MULTICAST_REC_OK = 0, 383 GNUNET_MULTICAST_REC_OK = 0,
384 384
385 /** 385 /**
386 * Message fragment not found in the message store. 386 * Message fragment not found in the message store.
387 * 387 *
388 * Either discarded if it is too old, or not arrived yet if this member has 388 * Either discarded if it is too old, or not arrived yet if this member has
@@ -390,7 +390,7 @@ enum GNUNET_MULTICAST_ReplayErrorCode
390 */ 390 */
391 GNUNET_MULTICAST_REC_NOT_FOUND = 1, 391 GNUNET_MULTICAST_REC_NOT_FOUND = 1,
392 392
393 /** 393 /**
394 * Fragment ID counter was larger than the highest counter this 394 * Fragment ID counter was larger than the highest counter this
395 * replay function has ever encountered; thus it is likely the 395 * replay function has ever encountered; thus it is likely the
396 * origin never sent it and we're at the HEAD of the multicast 396 * origin never sent it and we're at the HEAD of the multicast
@@ -400,12 +400,12 @@ enum GNUNET_MULTICAST_ReplayErrorCode
400 */ 400 */
401 GNUNET_MULTICAST_REC_PAST_HEAD = 2, 401 GNUNET_MULTICAST_REC_PAST_HEAD = 2,
402 402
403 /** 403 /**
404 * Access is denied to the requested fragment, membership test did not pass. 404 * Access is denied to the requested fragment, membership test did not pass.
405 */ 405 */
406 GNUNET_MULTICAST_REC_ACCESS_DENIED = 3, 406 GNUNET_MULTICAST_REC_ACCESS_DENIED = 3,
407 407
408 /** 408 /**
409 * Internal error (i.e. database error). Try some other peer. 409 * Internal error (i.e. database error). Try some other peer.
410 */ 410 */
411 GNUNET_MULTICAST_REC_INTERNAL_ERROR = 4 411 GNUNET_MULTICAST_REC_INTERNAL_ERROR = 4
@@ -413,7 +413,7 @@ enum GNUNET_MULTICAST_ReplayErrorCode
413}; 413};
414 414
415 415
416/** 416/**
417 * Replay a message fragment for the multicast group. 417 * Replay a message fragment for the multicast group.
418 * 418 *
419 * @param rh Replay handle identifying which replay operation was requested. 419 * @param rh Replay handle identifying which replay operation was requested.
@@ -426,7 +426,7 @@ GNUNET_MULTICAST_replay_response (struct GNUNET_MULTICAST_ReplayHandle *rh,
426 enum GNUNET_MULTICAST_ReplayErrorCode ec); 426 enum GNUNET_MULTICAST_ReplayErrorCode ec);
427 427
428 428
429/** 429/**
430 * Indicate the end of the replay session. 430 * Indicate the end of the replay session.
431 * 431 *
432 * Invalidates the replay handle. 432 * Invalidates the replay handle.
@@ -448,7 +448,7 @@ typedef int
448 void *data); 448 void *data);
449 449
450 450
451/** 451/**
452 * Replay a message for the multicast group. 452 * Replay a message for the multicast group.
453 * 453 *
454 * @param rh Replay handle identifying which replay operation was requested. 454 * @param rh Replay handle identifying which replay operation was requested.
@@ -461,7 +461,7 @@ GNUNET_MULTICAST_replay_response2 (struct GNUNET_MULTICAST_ReplayHandle *rh,
461 void *notify_cls); 461 void *notify_cls);
462 462
463 463
464/** 464/**
465 * Start a multicast group. 465 * Start a multicast group.
466 * 466 *
467 * Will advertise the origin in the P2P overlay network under the respective 467 * Will advertise the origin in the P2P overlay network under the respective
@@ -501,7 +501,7 @@ GNUNET_MULTICAST_origin_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
501 GNUNET_MULTICAST_MessageCallback message_cb, 501 GNUNET_MULTICAST_MessageCallback message_cb,
502 void *cls); 502 void *cls);
503 503
504/** 504/**
505 * Function called to provide data for a transmission from the origin to all 505 * Function called to provide data for a transmission from the origin to all
506 * members. 506 * members.
507 * 507 *
@@ -526,14 +526,14 @@ typedef int
526 void *data); 526 void *data);
527 527
528 528
529/** 529/**
530 * Handle for a request to send a message to all multicast group members 530 * Handle for a request to send a message to all multicast group members
531 * (from the origin). 531 * (from the origin).
532 */ 532 */
533struct GNUNET_MULTICAST_OriginMessageHandle; 533struct GNUNET_MULTICAST_OriginMessageHandle;
534 534
535 535
536/** 536/**
537 * Send a message to the multicast group. 537 * Send a message to the multicast group.
538 * 538 *
539 * @param origin Handle to the multicast group. 539 * @param origin Handle to the multicast group.
@@ -553,7 +553,7 @@ GNUNET_MULTICAST_origin_to_all (struct GNUNET_MULTICAST_Origin *origin,
553 553
554 554
555 555
556/** 556/**
557 * Resume message transmission to multicast group. 557 * Resume message transmission to multicast group.
558 * 558 *
559 * @param mh Request to cancel. 559 * @param mh Request to cancel.
@@ -562,7 +562,7 @@ void
562GNUNET_MULTICAST_origin_to_all_resume (struct GNUNET_MULTICAST_OriginMessageHandle *mh); 562GNUNET_MULTICAST_origin_to_all_resume (struct GNUNET_MULTICAST_OriginMessageHandle *mh);
563 563
564 564
565/** 565/**
566 * Cancel request for message transmission to multicast group. 566 * Cancel request for message transmission to multicast group.
567 * 567 *
568 * @param mh Request to cancel. 568 * @param mh Request to cancel.
@@ -571,7 +571,7 @@ void
571GNUNET_MULTICAST_origin_to_all_cancel (struct GNUNET_MULTICAST_OriginMessageHandle *mh); 571GNUNET_MULTICAST_origin_to_all_cancel (struct GNUNET_MULTICAST_OriginMessageHandle *mh);
572 572
573 573
574/** 574/**
575 * Stop a multicast group. 575 * Stop a multicast group.
576 * 576 *
577 * @param origin Multicast group to stop. 577 * @param origin Multicast group to stop.
@@ -580,7 +580,7 @@ void
580GNUNET_MULTICAST_origin_stop (struct GNUNET_MULTICAST_Origin *origin); 580GNUNET_MULTICAST_origin_stop (struct GNUNET_MULTICAST_Origin *origin);
581 581
582 582
583/** 583/**
584 * Join a multicast group. 584 * Join a multicast group.
585 * 585 *
586 * The entity joining is always the local peer. Further information about the 586 * The entity joining is always the local peer. Further information about the
@@ -636,13 +636,13 @@ GNUNET_MULTICAST_member_join (const struct GNUNET_CONFIGURATION_Handle *cfg,
636 GNUNET_MULTICAST_MessageCallback message_cb, 636 GNUNET_MULTICAST_MessageCallback message_cb,
637 void *cls); 637 void *cls);
638 638
639/** 639/**
640 * Handle for a replay request. 640 * Handle for a replay request.
641 */ 641 */
642struct GNUNET_MULTICAST_MemberReplayHandle; 642struct GNUNET_MULTICAST_MemberReplayHandle;
643 643
644 644
645/** 645/**
646 * Request a fragment to be replayed by fragment ID. 646 * Request a fragment to be replayed by fragment ID.
647 * 647 *
648 * Useful if messages below the @e max_known_fragment_id given when joining are 648 * Useful if messages below the @e max_known_fragment_id given when joining are
@@ -662,7 +662,7 @@ GNUNET_MULTICAST_member_replay_fragment (struct GNUNET_MULTICAST_Member *member,
662 uint64_t flags); 662 uint64_t flags);
663 663
664 664
665/** 665/**
666 * Request a message fr to be replayed. 666 * Request a message fr to be replayed.
667 * 667 *
668 * Useful if messages below the @e max_known_fragment_id given when joining are 668 * Useful if messages below the @e max_known_fragment_id given when joining are
@@ -686,7 +686,7 @@ GNUNET_MULTICAST_member_replay_message (struct GNUNET_MULTICAST_Member *member,
686 void *result_cb_cls); 686 void *result_cb_cls);
687 687
688 688
689/** 689/**
690 * Cancel a replay request. 690 * Cancel a replay request.
691 * 691 *
692 * @param rh Request to cancel. 692 * @param rh Request to cancel.
@@ -695,7 +695,7 @@ void
695GNUNET_MULTICAST_member_replay_cancel (struct GNUNET_MULTICAST_MemberReplayHandle *rh); 695GNUNET_MULTICAST_member_replay_cancel (struct GNUNET_MULTICAST_MemberReplayHandle *rh);
696 696
697 697
698/** 698/**
699 * Part a multicast group. 699 * Part a multicast group.
700 * 700 *
701 * Disconnects from all group members and invalidates the @a member handle. 701 * Disconnects from all group members and invalidates the @a member handle.
@@ -709,7 +709,7 @@ void
709GNUNET_MULTICAST_member_part (struct GNUNET_MULTICAST_Member *member); 709GNUNET_MULTICAST_member_part (struct GNUNET_MULTICAST_Member *member);
710 710
711 711
712/** 712/**
713 * Function called to provide data for a transmission from a member to the origin. 713 * Function called to provide data for a transmission from a member to the origin.
714 * 714 *
715 * Note that returning #GNUNET_OK or #GNUNET_SYSERR (but not #GNUNET_NO) 715 * Note that returning #GNUNET_OK or #GNUNET_SYSERR (but not #GNUNET_NO)
@@ -733,15 +733,15 @@ typedef int
733 void *data); 733 void *data);
734 734
735 735
736/** 736/**
737 * Handle for a message to be delivered from a member to the origin. 737 * Handle for a message to be delivered from a member to the origin.
738 */ 738 */
739struct GNUNET_MULTICAST_MemberRequestHandle; 739struct GNUNET_MULTICAST_MemberRequestHandle;
740 740
741 741
742/** 742/**
743 * Send a message to the origin of the multicast group. 743 * Send a message to the origin of the multicast group.
744 * 744 *
745 * @param member Membership handle. 745 * @param member Membership handle.
746 * @param message_id Application layer ID for the message. Opaque to multicast. 746 * @param message_id Application layer ID for the message. Opaque to multicast.
747 * @param notify Callback to call to get the message. 747 * @param notify Callback to call to get the message.
@@ -755,7 +755,7 @@ GNUNET_MULTICAST_member_to_origin (struct GNUNET_MULTICAST_Member *member,
755 void *notify_cls); 755 void *notify_cls);
756 756
757 757
758/** 758/**
759 * Resume message transmission to origin. 759 * Resume message transmission to origin.
760 * 760 *
761 * @param rh Request to cancel. 761 * @param rh Request to cancel.
@@ -764,7 +764,7 @@ void
764GNUNET_MULTICAST_member_to_origin_resume (struct GNUNET_MULTICAST_MemberRequestHandle *rh); 764GNUNET_MULTICAST_member_to_origin_resume (struct GNUNET_MULTICAST_MemberRequestHandle *rh);
765 765
766 766
767/** 767/**
768 * Cancel request for message transmission to origin. 768 * Cancel request for message transmission to origin.
769 * 769 *
770 * @param rh Request to cancel. 770 * @param rh Request to cancel.