1
<refentry id="camel-CamelTcpStream">
3
<refentrytitle role="top_of_page" id="camel-CamelTcpStream.top_of_page">CamelTcpStream</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>CAMEL Library</refmiscinfo>
9
<refname>CamelTcpStream</refname>
10
<refpurpose></refpurpose>
13
<refsynopsisdiv id="camel-CamelTcpStream.synopsis" role="synopsis">
14
<title role="synopsis.title">Synopsis</title>
17
struct <link linkend="CamelTcpStream">CamelTcpStream</link>;
18
enum <link linkend="CamelSockOpt">CamelSockOpt</link>;
19
typedef <link linkend="CamelLinger">CamelLinger</link>;
20
<link linkend="CamelSockOptData">CamelSockOptData</link>;
21
<link linkend="gint">gint</link> <link linkend="camel-tcp-stream-connect">camel_tcp_stream_connect</link> (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
22
<link linkend="struct-addrinfo">struct addrinfo</link> *host);
23
<link linkend="gint">gint</link> <link linkend="camel-tcp-stream-getsockopt">camel_tcp_stream_getsockopt</link> (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
24
<link linkend="CamelSockOptData">CamelSockOptData</link> *data);
25
<link linkend="gint">gint</link> <link linkend="camel-tcp-stream-setsockopt">camel_tcp_stream_setsockopt</link> (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
26
const <link linkend="CamelSockOptData">CamelSockOptData</link> *data);
27
struct <link linkend="sockaddr">sockaddr</link> * <link linkend="camel-tcp-stream-get-local-address">camel_tcp_stream_get_local_address</link> (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
28
<link linkend="socklen-t">socklen_t</link> *len);
29
struct <link linkend="sockaddr">sockaddr</link> * <link linkend="camel-tcp-stream-get-remote-address">camel_tcp_stream_get_remote_address</link> (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
30
<link linkend="socklen-t">socklen_t</link> *len);
42
<refsect1 id="camel-CamelTcpStream.description" role="desc">
43
<title role="desc.title">Description</title>
48
<refsect1 id="camel-CamelTcpStream.details" role="details">
49
<title role="details.title">Details</title>
50
<refsect2 id="CamelTcpStream" role="struct">
51
<title>struct CamelTcpStream</title>
52
<indexterm zone="CamelTcpStream"><primary sortas="CamelTcpStream">CamelTcpStream</primary></indexterm><programlisting>struct CamelTcpStream {
53
CamelStream parent_object;
58
<refsect2 id="CamelSockOpt" role="enum">
59
<title>enum CamelSockOpt</title>
60
<indexterm zone="CamelSockOpt"><primary sortas="CamelSockOpt">CamelSockOpt</primary></indexterm><programlisting>typedef enum {
61
CAMEL_SOCKOPT_NONBLOCKING, /* nonblocking io */
62
CAMEL_SOCKOPT_LINGER, /* linger on close if data present */
63
CAMEL_SOCKOPT_REUSEADDR, /* allow local address reuse */
64
CAMEL_SOCKOPT_KEEPALIVE, /* keep connections alive */
65
CAMEL_SOCKOPT_RECVBUFFERSIZE, /* receive buffer size */
66
CAMEL_SOCKOPT_SENDBUFFERSIZE, /* send buffer size */
68
CAMEL_SOCKOPT_IPTIMETOLIVE, /* time to live */
69
CAMEL_SOCKOPT_IPTYPEOFSERVICE, /* type of service and precedence */
71
CAMEL_SOCKOPT_ADDMEMBER, /* add an IP group membership */
72
CAMEL_SOCKOPT_DROPMEMBER, /* drop an IP group membership */
73
CAMEL_SOCKOPT_MCASTINTERFACE, /* multicast interface address */
74
CAMEL_SOCKOPT_MCASTTIMETOLIVE, /* multicast timetolive */
75
CAMEL_SOCKOPT_MCASTLOOPBACK, /* multicast loopback */
77
CAMEL_SOCKOPT_NODELAY, /* don't delay send to coalesce packets */
78
CAMEL_SOCKOPT_MAXSEGMENT, /* maximum segment size */
79
CAMEL_SOCKOPT_BROADCAST, /* enable broadcast */
85
<refsect2 id="CamelLinger" role="typedef">
86
<title>CamelLinger</title>
87
<indexterm zone="CamelLinger"><primary sortas="CamelLinger">CamelLinger</primary></indexterm><programlisting>typedef struct linger CamelLinger;
91
<refsect2 id="CamelSockOptData" role="struct">
92
<title>CamelSockOptData</title>
93
<indexterm zone="CamelSockOptData"><primary sortas="CamelSockOptData">CamelSockOptData</primary></indexterm><programlisting>typedef struct {
96
guint ip_ttl; /* IP time to live */
97
guint mcast_ttl; /* IP multicast time to live */
98
guint tos; /* IP type of service and precedence */
99
gboolean non_blocking; /* Non-blocking (network) I/O */
100
gboolean reuse_addr; /* Allow local address reuse */
101
gboolean keep_alive; /* Keep connections alive */
102
gboolean mcast_loopback; /* IP multicast loopback */
103
gboolean no_delay; /* Don't delay send to coalesce packets */
104
gboolean broadcast; /* Enable broadcast */
105
gsize max_segment; /* Maximum segment size */
106
gsize recv_buffer_size; /* Receive buffer size */
107
gsize send_buffer_size; /* Send buffer size */
108
CamelLinger linger; /* Time to linger on close if data present */
114
<refsect2 id="camel-tcp-stream-connect" role="function">
115
<title>camel_tcp_stream_connect ()</title>
116
<indexterm zone="camel-tcp-stream-connect"><primary sortas="camel_tcp_stream_connect">camel_tcp_stream_connect</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_tcp_stream_connect (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
117
<link linkend="struct-addrinfo">struct addrinfo</link> *host);</programlisting>
119
Create a socket and connect based upon the data provided.</para>
121
</para><variablelist role="params">
122
<varlistentry><term><parameter>stream</parameter> :</term>
123
<listitem><simpara> a <link linkend="CamelTcpStream"><type>CamelTcpStream</type></link> object
124
</simpara></listitem></varlistentry>
125
<varlistentry><term><parameter>host</parameter> :</term>
126
<listitem><simpara> a linked list of addrinfo structures to try to connect, in
127
the order of most likely to least likely to work.
128
</simpara></listitem></varlistentry>
129
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success or <link linkend="1--CAPS"><literal>-1</literal></link> on fail
130
</simpara></listitem></varlistentry>
131
</variablelist></refsect2>
132
<refsect2 id="camel-tcp-stream-getsockopt" role="function">
133
<title>camel_tcp_stream_getsockopt ()</title>
134
<indexterm zone="camel-tcp-stream-getsockopt"><primary sortas="camel_tcp_stream_getsockopt">camel_tcp_stream_getsockopt</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_tcp_stream_getsockopt (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
135
<link linkend="CamelSockOptData">CamelSockOptData</link> *data);</programlisting>
137
Get the socket options set on the stream and populate <parameter>data</parameter>.</para>
139
</para><variablelist role="params">
140
<varlistentry><term><parameter>stream</parameter> :</term>
141
<listitem><simpara> a <link linkend="CamelTcpStream"><type>CamelTcpStream</type></link> object
142
</simpara></listitem></varlistentry>
143
<varlistentry><term><parameter>data</parameter> :</term>
144
<listitem><simpara> socket option data
145
</simpara></listitem></varlistentry>
146
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success or <link linkend="1--CAPS"><literal>-1</literal></link> on fail
147
</simpara></listitem></varlistentry>
148
</variablelist></refsect2>
149
<refsect2 id="camel-tcp-stream-setsockopt" role="function">
150
<title>camel_tcp_stream_setsockopt ()</title>
151
<indexterm zone="camel-tcp-stream-setsockopt"><primary sortas="camel_tcp_stream_setsockopt">camel_tcp_stream_setsockopt</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_tcp_stream_setsockopt (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
152
const <link linkend="CamelSockOptData">CamelSockOptData</link> *data);</programlisting>
154
Set the socket options contained in <parameter>data</parameter> on the stream.</para>
156
</para><variablelist role="params">
157
<varlistentry><term><parameter>stream</parameter> :</term>
158
<listitem><simpara> a <link linkend="CamelTcpStream"><type>CamelTcpStream</type></link> object
159
</simpara></listitem></varlistentry>
160
<varlistentry><term><parameter>data</parameter> :</term>
161
<listitem><simpara> socket option data
162
</simpara></listitem></varlistentry>
163
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success or <link linkend="1--CAPS"><literal>-1</literal></link> on fail
164
</simpara></listitem></varlistentry>
165
</variablelist></refsect2>
166
<refsect2 id="camel-tcp-stream-get-local-address" role="function">
167
<title>camel_tcp_stream_get_local_address ()</title>
168
<indexterm zone="camel-tcp-stream-get-local-address"><primary sortas="camel_tcp_stream_get_local_address">camel_tcp_stream_get_local_address</primary></indexterm><programlisting>struct <link linkend="sockaddr">sockaddr</link> * camel_tcp_stream_get_local_address (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
169
<link linkend="socklen-t">socklen_t</link> *len);</programlisting>
171
Get the local address of <parameter>stream</parameter>.</para>
173
</para><variablelist role="params">
174
<varlistentry><term><parameter>stream</parameter> :</term>
175
<listitem><simpara> a <link linkend="CamelTcpStream"><type>CamelTcpStream</type></link> object
176
</simpara></listitem></varlistentry>
177
<varlistentry><term><parameter>len</parameter> :</term>
178
<listitem><simpara> pointer to address length which must be supplied
179
</simpara></listitem></varlistentry>
180
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the stream's local address (which must be freed with
181
<link linkend="g-free"><type>g_free</type></link>) if the stream is connected, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> if not
182
</simpara></listitem></varlistentry>
183
</variablelist></refsect2>
184
<refsect2 id="camel-tcp-stream-get-remote-address" role="function">
185
<title>camel_tcp_stream_get_remote_address ()</title>
186
<indexterm zone="camel-tcp-stream-get-remote-address"><primary sortas="camel_tcp_stream_get_remote_address">camel_tcp_stream_get_remote_address</primary></indexterm><programlisting>struct <link linkend="sockaddr">sockaddr</link> * camel_tcp_stream_get_remote_address (<link linkend="CamelTcpStream">CamelTcpStream</link> *stream,
187
<link linkend="socklen-t">socklen_t</link> *len);</programlisting>
189
Get the remote address of <parameter>stream</parameter>.</para>
191
</para><variablelist role="params">
192
<varlistentry><term><parameter>stream</parameter> :</term>
193
<listitem><simpara> a <link linkend="CamelTcpStream"><type>CamelTcpStream</type></link> object
194
</simpara></listitem></varlistentry>
195
<varlistentry><term><parameter>len</parameter> :</term>
196
<listitem><simpara> pointer to address length, which must be supplied
197
</simpara></listitem></varlistentry>
198
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the stream's remote address (which must be freed with
199
<link linkend="g-free"><type>g_free</type></link>) if the stream is connected, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> if not.
200
</simpara></listitem></varlistentry>
201
</variablelist></refsect2>