Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd94e630

Browse files
committed
Fleshing out the Synchronous Servers section.
1 parent7830016 commitd94e630

File tree

1 file changed

+87
-4
lines changed

1 file changed

+87
-4
lines changed

‎libs/network/doc/reference_http_server.rst‎

Lines changed: 87 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,99 @@ in the following section.
101101
Synchronous Servers
102102
~~~~~~~~~~~~~~~~~~~
103103

104-
.. FIXME show the table of tags that enable the synchronous implementation.
104+
The synchronous server implementation is represented by the template ``server``
105+
in namespace ``boost::network::http``. The ``server`` template takes in a single
106+
template parameter named ``Handler`` which models the SynchronousHandler
107+
concept (described above).
108+
109+
An instance of Handler is taken in by reference to the constructor of the HTTP
110+
server. This means the Handler is not copied around and only a single instance
111+
of the handler is used for all connections and requests performed against the
112+
HTTP server.
113+
114+
..warning::It is important to note that the HTTP server does not implement any
115+
locking upon invoking the Handler. In case you have any state in the Handler
116+
that will be associated with the synchronous server, you would have to
117+
implement your own synchronization internal to the Handler implementation.
118+
This matters especially if you run the synchronous server in multiple
119+
threads.
120+
121+
The general pattern of usage for the HTTP Server template is shown below:
122+
123+
..code-block::c++
124+
125+
struct handler;
126+
typedef boost::network::http::server<handler> http_server;
127+
128+
struct handler {
129+
void operator()(
130+
http_server::request const & req,
131+
http_server::response & res
132+
) {
133+
// do something, and then edit the res object here.
134+
}
135+
};
136+
137+
More information about the actual HTTP Server API follows in the next section.
138+
It is important to understand that the HTTP Server is actually embedded in your
139+
application, which means you can expose almost all your application logic
140+
through the Handler type, which you can also initialize appropriately.
141+
142+
API Documentation
143+
`````````````````
144+
145+
The following sections assume that the following file has been included:
146+
147+
..code-block::c++
148+
149+
#include <boost/network/include/http/server.hpp>
150+
151+
And that the following typedef's have been put in place:
152+
153+
..code-block::c++
154+
155+
struct handler_type;
156+
typedef boost::network::http::server<handler_type> http_server;
157+
158+
Constructor
159+
***********
160+
161+
``http_server(address, port, handler)``
162+
Construct an HTTP Server instance, passing in the address and port as
163+
``std::string const &`` and handler being of type ``handler_type`` but
164+
passed in as an lvalue reference.
165+
166+
Public Members
167+
**************
168+
169+
The following definitions assume that a properly constructed ``http_server``
170+
instance has been constructed in the following manner:
171+
172+
..code-block::c++
173+
174+
handler_type handler;
175+
http_server server("127.0.0.1", "8000", handler);
176+
177+
``server.run()``
178+
Run the HTTP Server event loop. This function can be run on multiple threads
179+
following the example:
180+
181+
..code-block::c++
182+
183+
boost::thread t1(boost::bind(&http_server::run, &server));
184+
boost::thread t2(boost::bind(&http_server::run, &server));
185+
server.run();
186+
187+
``server.stop()``
188+
Stop the HTTP Server acceptor and wait for all pending requests to finish.
105189

106190
Asynchronous Servers
107191
~~~~~~~~~~~~~~~~~~~~
108192

109193
.. FIXME show the table of tags that enable the asynchronous implementation.
110194
111-
Member Functions
112-
----------------
195+
API Documentation
196+
`````````````````
113197

114198
.. FIXME show the table of publicly-accessible member functions.
115199
116-

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp