1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
/*
This file is part of GNUnet.
Copyright (C) 2001-2017 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/**
* @file cadet/gnunet-service-cadet-new_connection.h
* @brief
* @author Bartlomiej Polot
* @author Christian Grothoff
*/
#ifndef GNUNET_SERVICE_CADET_CONNECTION_H
#define GNUNET_SERVICE_CADET_CONNECTION_H
#include "gnunet_util_lib.h"
#include "gnunet-service-cadet-new.h"
#include "gnunet-service-cadet-new_peer.h"
/**
* Is the given connection currently ready for transmission?
*
* @param cc connection to transmit on
* @return #GNUNET_YES if we could transmit
*/
int
GCC_is_ready (struct CadetConnection *cc);
/**
* Destroy a connection.
*
* @param cc connection to destroy
*/
void
GCC_destroy (struct CadetConnection *cc);
/**
* Create a connection to @a destination via @a path and
* notify @a cb whenever we are ready for more data.
*
* @param destination where to go
* @param path which path to take (may not be the full path)
* @param ready_cb function to call when ready to transmit
* @param ready_cb_cls closure for @a cb
*/
struct CadetConnection *
GCC_create (struct CadetPeer *destination,
struct CadetPeerPath *path,
GNUNET_SCHEDULER_TaskCallback ready_cb,
void *ready_cb_cls);
/**
* Transmit message @a msg via connection @a cc. Must only be called
* (once) after the connection has signalled that it is ready via the
* `ready_cb`. Clients can also use #GCC_is_ready() to check if the
* connection is right now ready for transmission.
*
* @param cc connection identification
* @param msg message to transmit
*/
void
GCC_transmit (struct CadetConnection *cc,
const struct GNUNET_MessageHeader *msg);
/**
* Obtain the path used by this connection.
*
* @param cc connection
* @return path to @a cc
*/
struct CadetPeerPath *
GCC_get_path (struct CadetConnection *cc);
/**
* Obtain unique ID for the connection.
*
* @param cc connection.
* @return unique number of the connection
*/
const struct GNUNET_CADET_ConnectionTunnelIdentifier *
GCC_get_id (struct CadetConnection *cc);
/**
* Log connection info.
*
* @param cc connection
* @param level Debug level to use.
*/
void
GCC_debug (struct CadetConnection *cc,
enum GNUNET_ErrorType level);
#endif
|