1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
2 |
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> |
3 |
<title>PEAK Library: Stream common</title> |
4 |
<link href="doxygen.css" rel="stylesheet" type="text/css"> |
5 |
</head><body> |
6 |
<!-- Generated by Doxygen 1.3.5 --> |
7 |
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="functions.html">Data Fields</a></div> |
8 |
<h1>Stream common<br> |
9 |
<small> |
10 |
[<a class="el" href="group__stream.html">Socket streams</a>]</small> |
11 |
</h1><hr><a name="_details"></a><h2>Detailed Description</h2> |
12 |
Creation methods and other common methods for socket streams. |
13 |
<p> |
14 |
|
15 |
<p> |
16 |
<table border=0 cellpadding=0 cellspacing=0> |
17 |
<tr><td></td></tr> |
18 |
<tr><td colspan=2><br><h2>Functions</h2></td></tr> |
19 |
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="group__stream.html#ga0">peak_stream</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga0">peak_stream_socket_create</a> (struct sockaddr *name, int namelen, uint32_t opt, <a class="el" href="group__stream.html#ga1">peak_stream_event_callback</a> cb, void *context)</td></tr> |
20 |
|
21 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new socket stream from a socket address. <a href="#ga0"></a><br><br></td></tr> |
22 |
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="group__stream.html#ga0">peak_stream</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga1">peak_stream_accept_create</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> ss, uint32_t opt, <a class="el" href="group__stream.html#ga1">peak_stream_event_callback</a> cb, void *context)</td></tr> |
23 |
|
24 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new socket stream from a incoming connection on a listening stream. <a href="#ga1"></a><br><br></td></tr> |
25 |
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="group__stream.html#ga0">peak_stream</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga2">peak_stream_raw_create</a> (int fd, uint32_t opt, <a class="el" href="group__stream.html#ga1">peak_stream_event_callback</a> cb, void *context)</td></tr> |
26 |
|
27 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new socket stream from a "raw" file descriptor (which must be a valid opened socket). <a href="#ga2"></a><br><br></td></tr> |
28 |
<tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga3">peak_stream_is_open</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s)</td></tr> |
29 |
|
30 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Test is a socket stream is open. <a href="#ga3"></a><br><br></td></tr> |
31 |
<tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga4">peak_stream_get_error</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s)</td></tr> |
32 |
|
33 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get last stream system error code. <a href="#ga4"></a><br><br></td></tr> |
34 |
<tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga5">peak_stream_get_address</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s, struct sockaddr *name, int *namelen)</td></tr> |
35 |
|
36 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get peer's name (address). <a href="#ga5"></a><br><br></td></tr> |
37 |
<tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga6">peak_stream_set_address</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s, struct sockaddr *name, int namelen)</td></tr> |
38 |
|
39 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Assign a name (address) to an unnamed socket. <a href="#ga6"></a><br><br></td></tr> |
40 |
<tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga7">peak_stream_connect</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s)</td></tr> |
41 |
|
42 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Connect the stream. <a href="#ga7"></a><br><br></td></tr> |
43 |
<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga8">peak_stream_disconnect</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s)</td></tr> |
44 |
|
45 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Disconnect the stream. <a href="#ga8"></a><br><br></td></tr> |
46 |
<tr><td class="memItemLeft" nowrap align=right valign=top>void * </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga9">peak_stream_get_context</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s)</td></tr> |
47 |
|
48 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the context pointer of a stream. <a href="#ga9"></a><br><br></td></tr> |
49 |
<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga10">peak_stream_set_context</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s, void *context)</td></tr> |
50 |
|
51 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the context pointer of a stream. <a href="#ga10"></a><br><br></td></tr> |
52 |
<tr><td class="memItemLeft" nowrap align=right valign=top>size_t </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga11">peak_stream_get_read_count</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s)</td></tr> |
53 |
|
54 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get amount of bytes actually read from the stream. <a href="#ga11"></a><br><br></td></tr> |
55 |
<tr><td class="memItemLeft" nowrap align=right valign=top>size_t </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga12">peak_stream_get_write_count</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s)</td></tr> |
56 |
|
57 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get amount of bytes actually written to the stream. <a href="#ga12"></a><br><br></td></tr> |
58 |
<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="group__stream__common.html#ga13">peak_stream_set_timeout</a> (<a class="el" href="group__stream.html#ga0">peak_stream</a> s, int timeout)</td></tr> |
59 |
|
60 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Configure event timeout checking for a specified stream. <a href="#ga13"></a><br><br></td></tr> |
61 |
</table> |
62 |
<hr><h2>Function Documentation</h2> |
63 |
<a class="anchor" name="ga1" doxytag="stream.h::peak_stream_accept_create" ></a><p> |
64 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
65 |
<tr> |
66 |
<td class="mdRow"> |
67 |
<table cellpadding="0" cellspacing="0" border="0"> |
68 |
<tr> |
69 |
<td class="md" nowrap valign="top"> <a class="el" href="group__stream.html#ga0">peak_stream</a> peak_stream_accept_create </td> |
70 |
<td class="md" valign="top">( </td> |
71 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
72 |
<td class="mdname" nowrap> <em>ss</em>, </td> |
73 |
</tr> |
74 |
<tr> |
75 |
<td></td> |
76 |
<td></td> |
77 |
<td class="md" nowrap>uint32_t </td> |
78 |
<td class="mdname" nowrap> <em>opt</em>, </td> |
79 |
</tr> |
80 |
<tr> |
81 |
<td></td> |
82 |
<td></td> |
83 |
<td class="md" nowrap><a class="el" href="group__stream.html#ga1">peak_stream_event_callback</a> </td> |
84 |
<td class="mdname" nowrap> <em>cb</em>, </td> |
85 |
</tr> |
86 |
<tr> |
87 |
<td></td> |
88 |
<td></td> |
89 |
<td class="md" nowrap>void * </td> |
90 |
<td class="mdname" nowrap> <em>context</em></td> |
91 |
</tr> |
92 |
<tr> |
93 |
<td></td> |
94 |
<td class="md">) </td> |
95 |
<td class="md" colspan="2"></td> |
96 |
</tr> |
97 |
|
98 |
</table> |
99 |
</td> |
100 |
</tr> |
101 |
</table> |
102 |
<table cellspacing=5 cellpadding=0 border=0> |
103 |
<tr> |
104 |
<td> |
105 |
|
106 |
</td> |
107 |
<td> |
108 |
|
109 |
<p> |
110 |
Creates a new socket stream from a incoming connection on a listening stream. |
111 |
<p> |
112 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
113 |
<table border="0" cellspacing="2" cellpadding="0"> |
114 |
<tr><td valign=top><em>ss</em> </td><td>The server's socket stream that got a PEAK_STREAM_EVT_ACCEPT event. </td></tr> |
115 |
<tr><td valign=top><em>opt</em> </td><td>Stream creation options. </td></tr> |
116 |
<tr><td valign=top><em>cb</em> </td><td>A pointer to your notification callback function that handles events that will occur on this stream once scheduled. </td></tr> |
117 |
<tr><td valign=top><em>context</em> </td><td>An extra application-defined pointer that will be passed to your event callback function (it's not used by the library).</td></tr> |
118 |
</table> |
119 |
</dl> |
120 |
<dl compact><dt><b>Returns:</b></dt><dd>A newly allocated peak_stream reference or NULL if the stream cannot be created. </dd></dl> |
121 |
</td> |
122 |
</tr> |
123 |
</table> |
124 |
<a class="anchor" name="ga7" doxytag="stream.h::peak_stream_connect" ></a><p> |
125 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
126 |
<tr> |
127 |
<td class="mdRow"> |
128 |
<table cellpadding="0" cellspacing="0" border="0"> |
129 |
<tr> |
130 |
<td class="md" nowrap valign="top"> int peak_stream_connect </td> |
131 |
<td class="md" valign="top">( </td> |
132 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
133 |
<td class="mdname1" valign="top" nowrap> <em>s</em> </td> |
134 |
<td class="md" valign="top"> ) </td> |
135 |
<td class="md" nowrap></td> |
136 |
</tr> |
137 |
|
138 |
</table> |
139 |
</td> |
140 |
</tr> |
141 |
</table> |
142 |
<table cellspacing=5 cellpadding=0 border=0> |
143 |
<tr> |
144 |
<td> |
145 |
|
146 |
</td> |
147 |
<td> |
148 |
|
149 |
<p> |
150 |
Connect the stream. |
151 |
<p> |
152 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
153 |
<table border="0" cellspacing="2" cellpadding="0"> |
154 |
<tr><td valign=top><em>s</em> </td><td>The stream reference.</td></tr> |
155 |
</table> |
156 |
</dl> |
157 |
<dl compact><dt><b>Return values:</b></dt><dd> |
158 |
<table border="0" cellspacing="2" cellpadding="0"> |
159 |
<tr><td valign=top><em>0</em> </td><td>if the operation is successful. </td></tr> |
160 |
<tr><td valign=top><em>-1</em> </td><td>if the connection to the remote host failed. </td></tr> |
161 |
</table> |
162 |
</dl> |
163 |
</td> |
164 |
</tr> |
165 |
</table> |
166 |
<a class="anchor" name="ga8" doxytag="stream.h::peak_stream_disconnect" ></a><p> |
167 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
168 |
<tr> |
169 |
<td class="mdRow"> |
170 |
<table cellpadding="0" cellspacing="0" border="0"> |
171 |
<tr> |
172 |
<td class="md" nowrap valign="top"> void peak_stream_disconnect </td> |
173 |
<td class="md" valign="top">( </td> |
174 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
175 |
<td class="mdname1" valign="top" nowrap> <em>s</em> </td> |
176 |
<td class="md" valign="top"> ) </td> |
177 |
<td class="md" nowrap></td> |
178 |
</tr> |
179 |
|
180 |
</table> |
181 |
</td> |
182 |
</tr> |
183 |
</table> |
184 |
<table cellspacing=5 cellpadding=0 border=0> |
185 |
<tr> |
186 |
<td> |
187 |
|
188 |
</td> |
189 |
<td> |
190 |
|
191 |
<p> |
192 |
Disconnect the stream. |
193 |
<p> |
194 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
195 |
<table border="0" cellspacing="2" cellpadding="0"> |
196 |
<tr><td valign=top><em>s</em> </td><td>The stream reference. </td></tr> |
197 |
</table> |
198 |
</dl> |
199 |
</td> |
200 |
</tr> |
201 |
</table> |
202 |
<a class="anchor" name="ga5" doxytag="stream.h::peak_stream_get_address" ></a><p> |
203 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
204 |
<tr> |
205 |
<td class="mdRow"> |
206 |
<table cellpadding="0" cellspacing="0" border="0"> |
207 |
<tr> |
208 |
<td class="md" nowrap valign="top"> int peak_stream_get_address </td> |
209 |
<td class="md" valign="top">( </td> |
210 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
211 |
<td class="mdname" nowrap> <em>s</em>, </td> |
212 |
</tr> |
213 |
<tr> |
214 |
<td></td> |
215 |
<td></td> |
216 |
<td class="md" nowrap>struct sockaddr * </td> |
217 |
<td class="mdname" nowrap> <em>name</em>, </td> |
218 |
</tr> |
219 |
<tr> |
220 |
<td></td> |
221 |
<td></td> |
222 |
<td class="md" nowrap>int * </td> |
223 |
<td class="mdname" nowrap> <em>namelen</em></td> |
224 |
</tr> |
225 |
<tr> |
226 |
<td></td> |
227 |
<td class="md">) </td> |
228 |
<td class="md" colspan="2"></td> |
229 |
</tr> |
230 |
|
231 |
</table> |
232 |
</td> |
233 |
</tr> |
234 |
</table> |
235 |
<table cellspacing=5 cellpadding=0 border=0> |
236 |
<tr> |
237 |
<td> |
238 |
|
239 |
</td> |
240 |
<td> |
241 |
|
242 |
<p> |
243 |
Get peer's name (address). |
244 |
<p> |
245 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
246 |
<table border="0" cellspacing="2" cellpadding="0"> |
247 |
<tr><td valign=top><em>s</em> </td><td>The stream reference. </td></tr> |
248 |
<tr><td valign=top><em>name</em> </td><td>A pointer to an allocated space for the address, enough to hold it (eg. a struct sockaddr_in for an IPv4 address). </td></tr> |
249 |
<tr><td valign=top><em>namelen</em> </td><td>Input/output argument, should be initialized to indicate the amount of size pointed to by <em>name</em>. On return it contains the actual size of the name returned (in bytes).</td></tr> |
250 |
</table> |
251 |
</dl> |
252 |
<dl compact><dt><b>Return values:</b></dt><dd> |
253 |
<table border="0" cellspacing="2" cellpadding="0"> |
254 |
<tr><td valign=top><em>0</em> </td><td>if the operation is successful. </td></tr> |
255 |
<tr><td valign=top><em>-1</em> </td><td>if the buffer <em>name</em> is too small. </td></tr> |
256 |
</table> |
257 |
</dl> |
258 |
</td> |
259 |
</tr> |
260 |
</table> |
261 |
<a class="anchor" name="ga9" doxytag="stream.h::peak_stream_get_context" ></a><p> |
262 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
263 |
<tr> |
264 |
<td class="mdRow"> |
265 |
<table cellpadding="0" cellspacing="0" border="0"> |
266 |
<tr> |
267 |
<td class="md" nowrap valign="top"> void* peak_stream_get_context </td> |
268 |
<td class="md" valign="top">( </td> |
269 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
270 |
<td class="mdname1" valign="top" nowrap> <em>s</em> </td> |
271 |
<td class="md" valign="top"> ) </td> |
272 |
<td class="md" nowrap></td> |
273 |
</tr> |
274 |
|
275 |
</table> |
276 |
</td> |
277 |
</tr> |
278 |
</table> |
279 |
<table cellspacing=5 cellpadding=0 border=0> |
280 |
<tr> |
281 |
<td> |
282 |
|
283 |
</td> |
284 |
<td> |
285 |
|
286 |
<p> |
287 |
Get the context pointer of a stream. |
288 |
<p> |
289 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
290 |
<table border="0" cellspacing="2" cellpadding="0"> |
291 |
<tr><td valign=top><em>s</em> </td><td>The stream reference.</td></tr> |
292 |
</table> |
293 |
</dl> |
294 |
<dl compact><dt><b>Returns:</b></dt><dd>The application-defined pointer. </dd></dl> |
295 |
</td> |
296 |
</tr> |
297 |
</table> |
298 |
<a class="anchor" name="ga4" doxytag="stream.h::peak_stream_get_error" ></a><p> |
299 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
300 |
<tr> |
301 |
<td class="mdRow"> |
302 |
<table cellpadding="0" cellspacing="0" border="0"> |
303 |
<tr> |
304 |
<td class="md" nowrap valign="top"> int peak_stream_get_error </td> |
305 |
<td class="md" valign="top">( </td> |
306 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
307 |
<td class="mdname1" valign="top" nowrap> <em>s</em> </td> |
308 |
<td class="md" valign="top"> ) </td> |
309 |
<td class="md" nowrap></td> |
310 |
</tr> |
311 |
|
312 |
</table> |
313 |
</td> |
314 |
</tr> |
315 |
</table> |
316 |
<table cellspacing=5 cellpadding=0 border=0> |
317 |
<tr> |
318 |
<td> |
319 |
|
320 |
</td> |
321 |
<td> |
322 |
|
323 |
<p> |
324 |
Get last stream system error code. |
325 |
<p> |
326 |
Returns the last socket or system error code as defined in sys/errno.h.<p> |
327 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
328 |
<table border="0" cellspacing="2" cellpadding="0"> |
329 |
<tr><td valign=top><em>s</em> </td><td>The stream reference.</td></tr> |
330 |
</table> |
331 |
</dl> |
332 |
<dl compact><dt><b>Returns:</b></dt><dd>The error code. </dd></dl> |
333 |
</td> |
334 |
</tr> |
335 |
</table> |
336 |
<a class="anchor" name="ga11" doxytag="stream.h::peak_stream_get_read_count" ></a><p> |
337 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
338 |
<tr> |
339 |
<td class="mdRow"> |
340 |
<table cellpadding="0" cellspacing="0" border="0"> |
341 |
<tr> |
342 |
<td class="md" nowrap valign="top"> size_t peak_stream_get_read_count </td> |
343 |
<td class="md" valign="top">( </td> |
344 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
345 |
<td class="mdname1" valign="top" nowrap> <em>s</em> </td> |
346 |
<td class="md" valign="top"> ) </td> |
347 |
<td class="md" nowrap></td> |
348 |
</tr> |
349 |
|
350 |
</table> |
351 |
</td> |
352 |
</tr> |
353 |
</table> |
354 |
<table cellspacing=5 cellpadding=0 border=0> |
355 |
<tr> |
356 |
<td> |
357 |
|
358 |
</td> |
359 |
<td> |
360 |
|
361 |
<p> |
362 |
Get amount of bytes actually read from the stream. |
363 |
<p> |
364 |
Statistical function.<p> |
365 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
366 |
<table border="0" cellspacing="2" cellpadding="0"> |
367 |
<tr><td valign=top><em>s</em> </td><td>The stream reference.</td></tr> |
368 |
</table> |
369 |
</dl> |
370 |
<dl compact><dt><b>Returns:</b></dt><dd>Number of bytes read since the stream's creation. </dd></dl> |
371 |
</td> |
372 |
</tr> |
373 |
</table> |
374 |
<a class="anchor" name="ga12" doxytag="stream.h::peak_stream_get_write_count" ></a><p> |
375 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
376 |
<tr> |
377 |
<td class="mdRow"> |
378 |
<table cellpadding="0" cellspacing="0" border="0"> |
379 |
<tr> |
380 |
<td class="md" nowrap valign="top"> size_t peak_stream_get_write_count </td> |
381 |
<td class="md" valign="top">( </td> |
382 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
383 |
<td class="mdname1" valign="top" nowrap> <em>s</em> </td> |
384 |
<td class="md" valign="top"> ) </td> |
385 |
<td class="md" nowrap></td> |
386 |
</tr> |
387 |
|
388 |
</table> |
389 |
</td> |
390 |
</tr> |
391 |
</table> |
392 |
<table cellspacing=5 cellpadding=0 border=0> |
393 |
<tr> |
394 |
<td> |
395 |
|
396 |
</td> |
397 |
<td> |
398 |
|
399 |
<p> |
400 |
Get amount of bytes actually written to the stream. |
401 |
<p> |
402 |
Statistical function.<p> |
403 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
404 |
<table border="0" cellspacing="2" cellpadding="0"> |
405 |
<tr><td valign=top><em>s</em> </td><td>The stream reference.</td></tr> |
406 |
</table> |
407 |
</dl> |
408 |
<dl compact><dt><b>Returns:</b></dt><dd>Number of bytes written since the stream's creation. </dd></dl> |
409 |
</td> |
410 |
</tr> |
411 |
</table> |
412 |
<a class="anchor" name="ga3" doxytag="stream.h::peak_stream_is_open" ></a><p> |
413 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
414 |
<tr> |
415 |
<td class="mdRow"> |
416 |
<table cellpadding="0" cellspacing="0" border="0"> |
417 |
<tr> |
418 |
<td class="md" nowrap valign="top"> int peak_stream_is_open </td> |
419 |
<td class="md" valign="top">( </td> |
420 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
421 |
<td class="mdname1" valign="top" nowrap> <em>s</em> </td> |
422 |
<td class="md" valign="top"> ) </td> |
423 |
<td class="md" nowrap></td> |
424 |
</tr> |
425 |
|
426 |
</table> |
427 |
</td> |
428 |
</tr> |
429 |
</table> |
430 |
<table cellspacing=5 cellpadding=0 border=0> |
431 |
<tr> |
432 |
<td> |
433 |
|
434 |
</td> |
435 |
<td> |
436 |
|
437 |
<p> |
438 |
Test is a socket stream is open. |
439 |
<p> |
440 |
An open stream is a connected socket for connection oriented streams.<p> |
441 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
442 |
<table border="0" cellspacing="2" cellpadding="0"> |
443 |
<tr><td valign=top><em>s</em> </td><td>The stream reference.</td></tr> |
444 |
</table> |
445 |
</dl> |
446 |
<dl compact><dt><b>Return values:</b></dt><dd> |
447 |
<table border="0" cellspacing="2" cellpadding="0"> |
448 |
<tr><td valign=top><em>0</em> </td><td>Stream not open. </td></tr> |
449 |
<tr><td valign=top><em>1</em> </td><td>Stream open. </td></tr> |
450 |
</table> |
451 |
</dl> |
452 |
</td> |
453 |
</tr> |
454 |
</table> |
455 |
<a class="anchor" name="ga2" doxytag="stream.h::peak_stream_raw_create" ></a><p> |
456 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
457 |
<tr> |
458 |
<td class="mdRow"> |
459 |
<table cellpadding="0" cellspacing="0" border="0"> |
460 |
<tr> |
461 |
<td class="md" nowrap valign="top"> <a class="el" href="group__stream.html#ga0">peak_stream</a> peak_stream_raw_create </td> |
462 |
<td class="md" valign="top">( </td> |
463 |
<td class="md" nowrap valign="top">int </td> |
464 |
<td class="mdname" nowrap> <em>fd</em>, </td> |
465 |
</tr> |
466 |
<tr> |
467 |
<td></td> |
468 |
<td></td> |
469 |
<td class="md" nowrap>uint32_t </td> |
470 |
<td class="mdname" nowrap> <em>opt</em>, </td> |
471 |
</tr> |
472 |
<tr> |
473 |
<td></td> |
474 |
<td></td> |
475 |
<td class="md" nowrap><a class="el" href="group__stream.html#ga1">peak_stream_event_callback</a> </td> |
476 |
<td class="mdname" nowrap> <em>cb</em>, </td> |
477 |
</tr> |
478 |
<tr> |
479 |
<td></td> |
480 |
<td></td> |
481 |
<td class="md" nowrap>void * </td> |
482 |
<td class="mdname" nowrap> <em>context</em></td> |
483 |
</tr> |
484 |
<tr> |
485 |
<td></td> |
486 |
<td class="md">) </td> |
487 |
<td class="md" colspan="2"></td> |
488 |
</tr> |
489 |
|
490 |
</table> |
491 |
</td> |
492 |
</tr> |
493 |
</table> |
494 |
<table cellspacing=5 cellpadding=0 border=0> |
495 |
<tr> |
496 |
<td> |
497 |
|
498 |
</td> |
499 |
<td> |
500 |
|
501 |
<p> |
502 |
Creates a new socket stream from a "raw" file descriptor (which must be a valid opened socket). |
503 |
<p> |
504 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
505 |
<table border="0" cellspacing="2" cellpadding="0"> |
506 |
<tr><td valign=top><em>fd</em> </td><td>The socket file descriptor. </td></tr> |
507 |
<tr><td valign=top><em>opt</em> </td><td>Stream creation options. </td></tr> |
508 |
<tr><td valign=top><em>cb</em> </td><td>A pointer to your notification callback function that handles events that will occur on this stream once scheduled. </td></tr> |
509 |
<tr><td valign=top><em>context</em> </td><td>An extra application-defined pointer that will be passed to your event callback function (it's not used by the library).</td></tr> |
510 |
</table> |
511 |
</dl> |
512 |
<dl compact><dt><b>Returns:</b></dt><dd>A newly allocated peak_stream reference or NULL if the stream cannot be created. </dd></dl> |
513 |
</td> |
514 |
</tr> |
515 |
</table> |
516 |
<a class="anchor" name="ga6" doxytag="stream.h::peak_stream_set_address" ></a><p> |
517 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
518 |
<tr> |
519 |
<td class="mdRow"> |
520 |
<table cellpadding="0" cellspacing="0" border="0"> |
521 |
<tr> |
522 |
<td class="md" nowrap valign="top"> int peak_stream_set_address </td> |
523 |
<td class="md" valign="top">( </td> |
524 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
525 |
<td class="mdname" nowrap> <em>s</em>, </td> |
526 |
</tr> |
527 |
<tr> |
528 |
<td></td> |
529 |
<td></td> |
530 |
<td class="md" nowrap>struct sockaddr * </td> |
531 |
<td class="mdname" nowrap> <em>name</em>, </td> |
532 |
</tr> |
533 |
<tr> |
534 |
<td></td> |
535 |
<td></td> |
536 |
<td class="md" nowrap>int </td> |
537 |
<td class="mdname" nowrap> <em>namelen</em></td> |
538 |
</tr> |
539 |
<tr> |
540 |
<td></td> |
541 |
<td class="md">) </td> |
542 |
<td class="md" colspan="2"></td> |
543 |
</tr> |
544 |
|
545 |
</table> |
546 |
</td> |
547 |
</tr> |
548 |
</table> |
549 |
<table cellspacing=5 cellpadding=0 border=0> |
550 |
<tr> |
551 |
<td> |
552 |
|
553 |
</td> |
554 |
<td> |
555 |
|
556 |
<p> |
557 |
Assign a name (address) to an unnamed socket. |
558 |
<p> |
559 |
This function allow you to bind the stream to a local address which is not the default (eg. for a vhost). Not for use with streams with the <code>PEAK_STREAM_OPT_LISTEN</code> option flag.<p> |
560 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
561 |
<table border="0" cellspacing="2" cellpadding="0"> |
562 |
<tr><td valign=top><em>s</em> </td><td>The stream reference. </td></tr> |
563 |
<tr><td valign=top><em>name</em> </td><td>A pointer to a structure describing the name (address) to assign to the stream socket. </td></tr> |
564 |
<tr><td valign=top><em>namelen</em> </td><td>The length of the pointed structure by name.</td></tr> |
565 |
</table> |
566 |
</dl> |
567 |
<dl compact><dt><b>Return values:</b></dt><dd> |
568 |
<table border="0" cellspacing="2" cellpadding="0"> |
569 |
<tr><td valign=top><em>0</em> </td><td>if the operation is successful. </td></tr> |
570 |
<tr><td valign=top><em>-1</em> </td><td>otherwise. </td></tr> |
571 |
</table> |
572 |
</dl> |
573 |
</td> |
574 |
</tr> |
575 |
</table> |
576 |
<a class="anchor" name="ga10" doxytag="stream.h::peak_stream_set_context" ></a><p> |
577 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
578 |
<tr> |
579 |
<td class="mdRow"> |
580 |
<table cellpadding="0" cellspacing="0" border="0"> |
581 |
<tr> |
582 |
<td class="md" nowrap valign="top"> void peak_stream_set_context </td> |
583 |
<td class="md" valign="top">( </td> |
584 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
585 |
<td class="mdname" nowrap> <em>s</em>, </td> |
586 |
</tr> |
587 |
<tr> |
588 |
<td></td> |
589 |
<td></td> |
590 |
<td class="md" nowrap>void * </td> |
591 |
<td class="mdname" nowrap> <em>context</em></td> |
592 |
</tr> |
593 |
<tr> |
594 |
<td></td> |
595 |
<td class="md">) </td> |
596 |
<td class="md" colspan="2"></td> |
597 |
</tr> |
598 |
|
599 |
</table> |
600 |
</td> |
601 |
</tr> |
602 |
</table> |
603 |
<table cellspacing=5 cellpadding=0 border=0> |
604 |
<tr> |
605 |
<td> |
606 |
|
607 |
</td> |
608 |
<td> |
609 |
|
610 |
<p> |
611 |
Change the context pointer of a stream. |
612 |
<p> |
613 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
614 |
<table border="0" cellspacing="2" cellpadding="0"> |
615 |
<tr><td valign=top><em>s</em> </td><td>The stream reference. </td></tr> |
616 |
<tr><td valign=top><em>context</em> </td><td>An extra application-defined pointer that will be passed to your event callback function (it's not used by the library). </td></tr> |
617 |
</table> |
618 |
</dl> |
619 |
</td> |
620 |
</tr> |
621 |
</table> |
622 |
<a class="anchor" name="ga13" doxytag="stream.h::peak_stream_set_timeout" ></a><p> |
623 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
624 |
<tr> |
625 |
<td class="mdRow"> |
626 |
<table cellpadding="0" cellspacing="0" border="0"> |
627 |
<tr> |
628 |
<td class="md" nowrap valign="top"> void peak_stream_set_timeout </td> |
629 |
<td class="md" valign="top">( </td> |
630 |
<td class="md" nowrap valign="top"><a class="el" href="group__stream.html#ga0">peak_stream</a> </td> |
631 |
<td class="mdname" nowrap> <em>s</em>, </td> |
632 |
</tr> |
633 |
<tr> |
634 |
<td></td> |
635 |
<td></td> |
636 |
<td class="md" nowrap>int </td> |
637 |
<td class="mdname" nowrap> <em>timeout</em></td> |
638 |
</tr> |
639 |
<tr> |
640 |
<td></td> |
641 |
<td class="md">) </td> |
642 |
<td class="md" colspan="2"></td> |
643 |
</tr> |
644 |
|
645 |
</table> |
646 |
</td> |
647 |
</tr> |
648 |
</table> |
649 |
<table cellspacing=5 cellpadding=0 border=0> |
650 |
<tr> |
651 |
<td> |
652 |
|
653 |
</td> |
654 |
<td> |
655 |
|
656 |
<p> |
657 |
Configure event timeout checking for a specified stream. |
658 |
<p> |
659 |
This is a convenience feature. First, because an explicit timer isn't needed to check stream's timeout in your application anymore. But for thread safety too: when peak is not explicitely configured to use only one thread, an independant timer might be processed at the same time with an event on the stream, so you need to add mutual exclusive region (implementation is possible with <a class="el" href="group__task__sync.html#ga21">peak_task_exclusivity()</a>), and verify all it's well synchronized. With <a class="el" href="group__stream__common.html#ga53">peak_stream_set_timeout()</a> however, the timeout event acts like a normal stream events and cannot be processed at the same time with another on the same stream.<p> |
660 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
661 |
<table border="0" cellspacing="2" cellpadding="0"> |
662 |
<tr><td valign=top><em>s</em> </td><td>The stream reference. </td></tr> |
663 |
<tr><td valign=top><em>timeout</em> </td><td>Time in seconds until an event of type <em>PEAK_STREAM_EVT_TIMEDOUT</em> will be sent. Use 0 to disable timeout checking. </td></tr> |
664 |
</table> |
665 |
</dl> |
666 |
</td> |
667 |
</tr> |
668 |
</table> |
669 |
<a class="anchor" name="ga0" doxytag="stream.h::peak_stream_socket_create" ></a><p> |
670 |
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> |
671 |
<tr> |
672 |
<td class="mdRow"> |
673 |
<table cellpadding="0" cellspacing="0" border="0"> |
674 |
<tr> |
675 |
<td class="md" nowrap valign="top"> <a class="el" href="group__stream.html#ga0">peak_stream</a> peak_stream_socket_create </td> |
676 |
<td class="md" valign="top">( </td> |
677 |
<td class="md" nowrap valign="top">struct sockaddr * </td> |
678 |
<td class="mdname" nowrap> <em>name</em>, </td> |
679 |
</tr> |
680 |
<tr> |
681 |
<td></td> |
682 |
<td></td> |
683 |
<td class="md" nowrap>int </td> |
684 |
<td class="mdname" nowrap> <em>namelen</em>, </td> |
685 |
</tr> |
686 |
<tr> |
687 |
<td></td> |
688 |
<td></td> |
689 |
<td class="md" nowrap>uint32_t </td> |
690 |
<td class="mdname" nowrap> <em>opt</em>, </td> |
691 |
</tr> |
692 |
<tr> |
693 |
<td></td> |
694 |
<td></td> |
695 |
<td class="md" nowrap><a class="el" href="group__stream.html#ga1">peak_stream_event_callback</a> </td> |
696 |
<td class="mdname" nowrap> <em>cb</em>, </td> |
697 |
</tr> |
698 |
<tr> |
699 |
<td></td> |
700 |
<td></td> |
701 |
<td class="md" nowrap>void * </td> |
702 |
<td class="mdname" nowrap> <em>context</em></td> |
703 |
</tr> |
704 |
<tr> |
705 |
<td></td> |
706 |
<td class="md">) </td> |
707 |
<td class="md" colspan="2"></td> |
708 |
</tr> |
709 |
|
710 |
</table> |
711 |
</td> |
712 |
</tr> |
713 |
</table> |
714 |
<table cellspacing=5 cellpadding=0 border=0> |
715 |
<tr> |
716 |
<td> |
717 |
|
718 |
</td> |
719 |
<td> |
720 |
|
721 |
<p> |
722 |
Creates a new socket stream from a socket address. |
723 |
<p> |
724 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
725 |
<table border="0" cellspacing="2" cellpadding="0"> |
726 |
<tr><td valign=top><em>name</em> </td><td>Pointer to a socket's name/address. For listening sockets, this is the name/local address of the socket, but for outgoing sockets this is the name/address of the other socket. Several socket protocol types are supported (PF_INET, PF_INET6). </td></tr> |
727 |
<tr><td valign=top><em>namelen</em> </td><td>Length of the structure pointed by name. </td></tr> |
728 |
<tr><td valign=top><em>opt</em> </td><td>Stream creation options. </td></tr> |
729 |
<tr><td valign=top><em>cb</em> </td><td>A pointer to your notification callback function that handles events that will occur on this stream once scheduled. </td></tr> |
730 |
<tr><td valign=top><em>context</em> </td><td>An extra application-defined pointer that will be passed to your event callback function (it's not used by the library).</td></tr> |
731 |
</table> |
732 |
</dl> |
733 |
<dl compact><dt><b>Returns:</b></dt><dd>A newly allocated peak_stream reference or NULL if the stream cannot be created. </dd></dl> |
734 |
</td> |
735 |
</tr> |
736 |
</table> |
737 |
<hr size="1"><address style="align: right;"><small>Generated on Sat Jan 17 21:41:54 2004 for the PEAK Library by |
738 |
<a href="http://www.doxygen.org/index.html"> |
739 |
<img src="doxygen.png" alt="doxygen" align="middle" border="0" > |
740 |
</a></small> <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=98146&type=1" width="88" height="31" align="middle" border="0" alt="SourceForge.net Logo" /></a></address> |
741 |
</body> |
742 |
</html> |
743 |
|