-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmessage.html
399 lines (383 loc) · 25 KB
/
message.html
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The message template — cpp-netlib v0.10.0</title>
<link rel="stylesheet" href="../_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '0.10.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="top" title="cpp-netlib v0.10.0" href="../index.html" />
<link rel="up" title="An in-depth look at the cpp-netlib" href="../in_depth.html" />
<link rel="next" title="The URI class" href="uri.html" />
<link rel="prev" title="An in-depth look at the cpp-netlib" href="../in_depth.html" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton&subset=latin" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="../_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="uri.html" title="The URI class"
accesskey="N">next</a></li>
<li class="right" >
<a href="../in_depth.html" title="An in-depth look at the cpp-netlib"
accesskey="P">previous</a> |</li>
<li><a href="../contents.html">cpp-netlib v0.10.0</a> »</li>
<li><a href="../in_depth.html" accesskey="U">An in-depth look at the <tt class="docutils literal docutils literal docutils literal docutils literal docutils literal docutils literal"><span class="pre">cpp-netlib</span></tt></a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="the-message-template">
<h1>The message template<a class="headerlink" href="#the-message-template" title="Permalink to this headline">¶</a></h1>
<p>One of the core components in the library is the concept and the
implementation of a common message type. In most (not all) network
protocols, the concept of a message is central to the definition of
the protocol. In HTTP, SMTP, XMPP, and even other protocols like SNMP
and ICMP, there is a common notion of a “packet” or a message. In
cpp-netlib we chose to implement the concept of a message that has the
following common parts:</p>
<blockquote>
<div><ul class="simple">
<li><strong>Source</strong> - every message has a source identifier which varies
from protocol to protocol.</li>
<li><strong>Destination</strong> - every message has a destination identifier which
varies from protocol to protocol.</li>
<li><strong>Headers</strong> - each message is assumed to contain headers, which
may be empty in cases where the protocol does not support it, but
is nonetheless supported by cpp-netlib messages.</li>
<li><strong>Body</strong> - the content area of a message which varies from
protocol to protocol (also sometimes referred to as payload).</li>
</ul>
</div></blockquote>
<p>This division is purely logical – in the underlying implementation,
the message type can choose to have different means of storing the
data, depending on the type used to tag the message. This section
covers the <a class="reference internal" href="#message-concept">Message Concept</a> as well as the <a class="reference internal" href="#basic-message">basic_message</a>
implementation.</p>
<div class="section" id="message-concept">
<h2>Message Concept<a class="headerlink" href="#message-concept" title="Permalink to this headline">¶</a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">The message is under review at present and will be
subject to change in newer versions.</p>
</div>
<p>The Message Concept specifies what the valid operations on a message
are as well as what messages look like semantically. The following
table summarize the operations and syntactic as well as semantic
properties of messages.</p>
<p><strong>Legend</strong></p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">M:</th><td class="field-body">The message type.</td>
</tr>
<tr class="field-even field"><th class="field-name">H:</th><td class="field-body">A headers container type.</td>
</tr>
<tr class="field-odd field"><th class="field-name">m,n:</th><td class="field-body">An instance of <strong>M</strong>.</td>
</tr>
<tr class="field-even field"><th class="field-name">S:</th><td class="field-body">A string type.</td>
</tr>
<tr class="field-odd field"><th class="field-name">s,k,v:</th><td class="field-body">An instance of <strong>S</strong>.</td>
</tr>
<tr class="field-even field"><th class="field-name">O:</th><td class="field-body">The source type.</td>
</tr>
<tr class="field-odd field"><th class="field-name">D:</th><td class="field-body">The destination type.</td>
</tr>
<tr class="field-even field"><th class="field-name">B:</th><td class="field-body">The body type.</td>
</tr>
<tr class="field-odd field"><th class="field-name">T:</th><td class="field-body">The Tag type.</td>
</tr>
</tbody>
</table>
<table border="1" class="docutils">
<colgroup>
<col width="31%" />
<col width="24%" />
<col width="45%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Construct</th>
<th class="head">Result</th>
<th class="head">Description</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">typename</span> <span class="pre">M::tag</span></tt></td>
<td>T</td>
<td>The nested tag type.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">M()</span></tt></td>
<td>Instance of M</td>
<td>Default constructible.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">M(m)</span></tt></td>
<td>Instance of M</td>
<td>Copy constructible.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">m</span> <span class="pre">=</span> <span class="pre">n;</span></tt></td>
<td>Reference to m</td>
<td>Assignable.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">swap(m,</span> <span class="pre">n);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">void</span></tt></td>
<td>Swappable.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">source(m);</span></tt></td>
<td>Convertible to O</td>
<td>Retrieve the source of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">destination(m);</span></tt></td>
<td>Convertible to D</td>
<td>Retrieve the destination of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">headers(m);</span></tt></td>
<td>Convertible to H</td>
<td>Retrieve the headers of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">body(m);</span></tt></td>
<td>Convertible to B</td>
<td>Retrieve the body of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">m</span> <span class="pre"><<</span> <span class="pre">source(s);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">M</span> <span class="pre">&</span></tt></td>
<td>Set the source of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">m</span> <span class="pre"><<</span> <span class="pre">destination(s);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">M</span> <span class="pre">&</span></tt></td>
<td>Set the destination of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">m</span> <span class="pre"><<</span> <span class="pre">header(k,</span> <span class="pre">v);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">M</span> <span class="pre">&</span></tt></td>
<td>Add a header to <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">m</span> <span class="pre"><<</span> <span class="pre">remove_header(k);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">M</span> <span class="pre">&</span></tt></td>
<td>Remove a header from <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">m</span> <span class="pre"><<</span> <span class="pre">body(s);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">M</span> <span class="pre">&</span></tt></td>
<td>Set the body of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">source(m,s);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">void</span></tt></td>
<td>Set the source of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">destination(m,s);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">void</span></tt></td>
<td>Set the destination of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">add_header(m,</span> <span class="pre">k,</span> <span class="pre">v);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">void</span></tt></td>
<td>Add a header to <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">remove_header(m,</span> <span class="pre">k);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">void</span></tt></td>
<td>Remove a header from <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">clear_headers(m);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">void</span></tt></td>
<td>Clear the headers of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">body(m,s);</span></tt></td>
<td><tt class="docutils literal"><span class="pre">M</span> <span class="pre">&</span></tt></td>
<td>Set the body of <tt class="docutils literal"><span class="pre">m</span></tt>.</td>
</tr>
</tbody>
</table>
<p>Types that model the Message Concept are meant to encapsulate data
that has a source, a destination, one or more named headers, and a
body/payload. Because the accessors and the directives are not
required to be part of the message type that models the Message
Concept, a message can be implemented as a POD type and have all
manipulations performed in the directive implementations, as well as
value transformations done in the accessors.</p>
</div>
<div class="section" id="directives-modifiers-and-wrappers">
<h2>Directives, Modifiers, and Wrappers<a class="headerlink" href="#directives-modifiers-and-wrappers" title="Permalink to this headline">¶</a></h2>
<p>In the Message Concept definition there are three basic constructs that follow a
certain pattern. These patterns are <a class="reference internal" href="#directives">Directives</a>, <a class="reference internal" href="#modifiers">Modifiers</a>, and <a class="reference internal" href="#wrappers">Wrappers</a>.</p>
<div class="section" id="directives">
<h3>Directives<a class="headerlink" href="#directives" title="Permalink to this headline">¶</a></h3>
<p>A directive is a function object that is applied to a Message. Directives
encapsulate a set of operations that apply to messages. The general requirement
for a Directive is that it should apply these operations on a message.</p>
<p>A directive may dispatch on the type of the message passed to it at the point of
the function call. Typically, directives are generated using a factory function
that returns the correct directive type.</p>
<p>For a given directive <tt class="docutils literal"><span class="pre">foo_directive</span></tt> a generator function called <tt class="docutils literal"><span class="pre">foo</span></tt> is
typically implemented:</p>
<div class="highlight-c++"><div class="highlight"><pre><span class="k">struct</span> <span class="n">foo_directive</span> <span class="p">{</span>
<span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">Message</span><span class="o">></span>
<span class="n">Message</span> <span class="o">&</span> <span class="k">operator</span><span class="p">()(</span><span class="n">Message</span> <span class="o">&</span> <span class="n">m</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span>
<span class="c1">// do something to m</span>
<span class="k">return</span> <span class="n">m</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="n">foo_directive</span> <span class="k">const</span> <span class="nf">foo</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">foo_directive</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// to apply a directive, we use the << operator</span>
<span class="n">message</span> <span class="n">m</span><span class="p">;</span>
<span class="n">m</span> <span class="o"><<</span> <span class="n">foo</span><span class="p">();</span>
</pre></div>
</div>
</div>
<div class="section" id="modifiers">
<h3>Modifiers<a class="headerlink" href="#modifiers" title="Permalink to this headline">¶</a></h3>
<p>A modifier is generally defined as a free function that takes a reference to a
non-const lvalue message as the first parameter, and any number of parameters.
In the concept definition of the Message Concept, a modifier follows the form:</p>
<div class="highlight-c++"><div class="highlight"><pre><span class="n">modifier</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="p">...)</span>
</pre></div>
</div>
<p>Modifiers are meant to imply modifications on a message, which also allows for
easier dispatch based on Argument Dependent Lookup (<a class="reference external" href="http://en.wikipedia.org/wiki/Argument-dependent_name_lookup">ADL</a>) on the type of the
message. Note that <a class="reference internal" href="#directives">Directives</a> can be implemented in terms of Modifiers and
vice versa, although that is not required nor specified.</p>
</div>
<div class="section" id="wrappers">
<h3>Wrappers<a class="headerlink" href="#wrappers" title="Permalink to this headline">¶</a></h3>
<p>A Wrapper is basically an implementation detail that ensures that a given
message, when wrapped, can be converted to the associated part of the message. A
wrapper has a type that encapsulates the conversion logic from a message to a
given type.</p>
<p>An example of a Wrapper would be <tt class="docutils literal"><span class="pre">source_wrapper</span></tt> which would be returned by a
call to the wrapper generator function <tt class="docutils literal"><span class="pre">source</span></tt>. An example implementation of
the <tt class="docutils literal"><span class="pre">source_wrapper</span></tt> would look like:</p>
<div class="highlight-c++"><div class="highlight"><pre><span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">Tag</span><span class="p">,</span> <span class="k">template</span> <span class="o"><</span><span class="n">class</span><span class="o">></span> <span class="k">class</span> <span class="nc">Message</span><span class="o">></span>
<span class="k">struct</span> <span class="n">source_wrapper</span> <span class="p">{</span>
<span class="n">Message</span><span class="o"><</span><span class="n">Tag</span><span class="o">></span> <span class="k">const</span> <span class="o">&</span> <span class="n">m</span><span class="p">;</span>
<span class="k">explicit</span> <span class="nf">source_wrapper</span><span class="p">(</span><span class="n">Message</span><span class="o"><</span><span class="n">Tag</span><span class="o">></span> <span class="k">const</span> <span class="o">&</span> <span class="n">m</span><span class="p">)</span>
<span class="o">:</span> <span class="n">m</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> <span class="p">{}</span>
<span class="k">typedef</span> <span class="k">typename</span> <span class="n">source</span><span class="o"><</span><span class="n">Tag</span><span class="o">>::</span><span class="n">type</span> <span class="n">source_type</span><span class="p">;</span>
<span class="k">operator</span> <span class="n">source_type</span> <span class="k">const</span> <span class="o">&</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">m</span><span class="p">.</span><span class="n">source</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">operator</span> <span class="n">source_type</span> <span class="k">const</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">m</span><span class="p">.</span><span class="n">source</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">operator</span> <span class="n">source_type</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">m</span><span class="p">.</span><span class="n">source</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">Tag</span><span class="p">,</span> <span class="k">template</span> <span class="o"><</span><span class="n">class</span><span class="o">></span> <span class="k">class</span> <span class="nc">Message</span><span class="o">></span>
<span class="n">source_wrapper</span><span class="o"><</span><span class="n">Tag</span><span class="p">,</span> <span class="n">Message</span><span class="o">></span> <span class="k">const</span>
<span class="n">source</span><span class="p">(</span><span class="n">Message</span><span class="o"><</span><span class="n">Tag</span><span class="o">></span> <span class="k">const</span> <span class="o">&</span> <span class="n">message</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">source_wrapper</span><span class="o"><</span><span class="n">Tag</span><span class="p">,</span> <span class="n">Message</span><span class="o">></span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<p>This pattern is similar to an adapter, but the specific notion of wrapping a
data type (in this case, an object of a type that models the Message Concept)
using an intermediary wrapper is what is pertained to by the Wrapper pattern.
In this case, the Wrapper is <tt class="docutils literal"><span class="pre">source_wrapper</span></tt> while <tt class="docutils literal"><span class="pre">source</span></tt> is merely a
wrapper generator function.</p>
</div>
</div>
<div class="section" id="basic-message">
<h2><tt class="docutils literal"><span class="pre">basic_message</span></tt><a class="headerlink" href="#basic-message" title="Permalink to this headline">¶</a></h2>
<p>The default implementation of a simple type that models the Message
Concept is available in cpp-netlib. This default implementation is
named <tt class="docutils literal"><span class="pre">basic_message</span></tt> which supports a <tt class="docutils literal"><span class="pre">Tag</span></tt> template
parameter. The definition of <tt class="docutils literal"><span class="pre">basic_message</span></tt> looks like this:</p>
<div class="highlight-c++"><div class="highlight"><pre><span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">Tag</span><span class="o">></span>
<span class="k">class</span> <span class="nc">basic_message</span><span class="p">;</span>
</pre></div>
</div>
<p>The <tt class="docutils literal"><span class="pre">basic_message</span></tt> template requires that the following
tag-dispatched metafunctions are defined for the type <tt class="docutils literal"><span class="pre">Tag</span></tt>:</p>
<div class="highlight-c++"><div class="highlight"><pre><span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">Tag</span><span class="o">></span>
<span class="k">struct</span> <span class="n">string</span><span class="p">;</span>
<span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">Tag</span><span class="o">></span>
<span class="k">struct</span> <span class="n">headers_container</span><span class="p">;</span>
</pre></div>
</div>
<p>All the operations defined by the message concept are implemented by
this basic message type. Other message implementations can either use
this common message type or specialize it according to whether they
want to use different containers or whether it’s going to be just a
POD type.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">The message template</a><ul>
<li><a class="reference internal" href="#message-concept">Message Concept</a></li>
<li><a class="reference internal" href="#directives-modifiers-and-wrappers">Directives, Modifiers, and Wrappers</a><ul>
<li><a class="reference internal" href="#directives">Directives</a></li>
<li><a class="reference internal" href="#modifiers">Modifiers</a></li>
<li><a class="reference internal" href="#wrappers">Wrappers</a></li>
</ul>
</li>
<li><a class="reference internal" href="#basic-message"><tt class="docutils literal"><span class="pre">basic_message</span></tt></a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="../in_depth.html"
title="previous chapter">An in-depth look at the <tt class="docutils literal docutils literal docutils literal docutils literal docutils literal"><span class="pre">cpp-netlib</span></tt></a></p>
<h4>Next topic</h4>
<p class="topless"><a href="uri.html"
title="next chapter">The URI class</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="uri.html" title="The URI class"
>next</a></li>
<li class="right" >
<a href="../in_depth.html" title="An in-depth look at the cpp-netlib"
>previous</a> |</li>
<li><a href="../contents.html">cpp-netlib v0.10.0</a> »</li>
<li><a href="../in_depth.html" >An in-depth look at the <tt class="docutils literal docutils literal docutils literal docutils literal docutils literal docutils literal"><span class="pre">cpp-netlib</span></tt></a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2008-2013, Glyn Matthews, Dean Michael Berris; 2013 Google, Inc..
Last updated on Jul 05, 2013.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1.
</div>
</body>
</html>