NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
step2.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015, Peter Thorson. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright
7
* notice, this list of conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright
9
* notice, this list of conditions and the following disclaimer in the
10
* documentation and/or other materials provided with the distribution.
11
* * Neither the name of the WebSocket++ Project nor the
12
* names of its contributors may be used to endorse or promote products
13
* derived from this software without specific prior written permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
19
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*/
26
27
// **NOTE:** This file is a snapshot of the WebSocket++ utility server tutorial.
28
// Additional related material can be found in the tutorials/utility_server
29
// directory of the WebSocket++ repository.
30
31
// The ASIO_STANDALONE define is necessary to use the standalone version of Asio.
32
// Remove if you are using Boost Asio.
33
#define ASIO_STANDALONE
34
35
#include <
websocketpp/config/asio_no_tls.hpp
>
36
#include <
websocketpp/server.hpp
>
37
38
#include <functional>
39
40
typedef
websocketpp::server<websocketpp::config::asio>
server
;
41
42
class
utility_server
{
43
public
:
44
utility_server
() {
45
// Set logging settings
46
m_endpoint.
set_error_channels
(
websocketpp::log::elevel::all
);
47
m_endpoint.
set_access_channels
(
websocketpp::log::alevel::all
^
websocketpp::log::alevel::frame_payload
);
48
49
// Initialize Asio
50
m_endpoint.init_asio();
51
52
// Set the default message handler to the echo handler
53
m_endpoint.
set_message_handler
(std::bind(
54
&
utility_server::echo_handler
,
this
,
55
std::placeholders::_1, std::placeholders::_2
56
));
57
}
58
59
void
echo_handler
(
websocketpp::connection_hdl
hdl,
server::message_ptr
msg) {
60
// write a new message
61
m_endpoint.
send
(hdl, msg->get_payload(), msg->get_opcode());
62
}
63
64
void
run
() {
65
// Listen on port 9002
66
m_endpoint.listen(9002);
67
68
// Queues a connection accept operation
69
m_endpoint.
start_accept
();
70
71
// Start the Asio io_service run loop
72
m_endpoint.run();
73
}
74
private
:
75
server
m_endpoint;
76
};
77
78
int
main
() {
79
utility_server
s;
80
s.
run
();
81
return
0;
82
}
websocketpp::log::alevel::all
static level const all
Special aggregate value representing "all levels".
Definition:
levels.hpp:152
utility_server
Definition:
step1.cpp:42
utility_server::utility_server
utility_server()
Definition:
step2.cpp:44
websocketpp::endpoint< connection< websocketpp::config::asio >, websocketpp::config::asio >::message_ptr
connection_type::message_ptr message_ptr
Type of message pointers that this endpoint uses.
Definition:
endpoint.hpp:70
websocketpp::log::alevel::frame_payload
static level const frame_payload
One line per frame, includes the full message payload (warning: chatty)
Definition:
levels.hpp:129
websocketpp::connection_hdl
lib::weak_ptr< void > connection_hdl
A handle to uniquely identify a connection.
Definition:
connection_hdl.hpp:48
utility_server::run
void run()
Definition:
step2.cpp:64
utility_server::echo_handler
void echo_handler(websocketpp::connection_hdl hdl, server::message_ptr msg)
Definition:
step2.cpp:59
websocketpp::server::start_accept
void start_accept(lib::error_code &ec)
Starts the server's async connection acceptance loop (exception free)
Definition:
server_endpoint.hpp:121
websocketpp::server< websocketpp::config::asio >
websocketpp::endpoint::set_access_channels
void set_access_channels(log::level channels)
Set Access logging channel.
Definition:
endpoint.hpp:220
server
websocketpp::server< websocketpp::config::asio > server
Definition:
step2.cpp:40
asio_no_tls.hpp
websocketpp::endpoint::set_error_channels
void set_error_channels(log::level channels)
Set Error logging channel.
Definition:
endpoint.hpp:242
main
int main()
Definition:
step2.cpp:39
websocketpp::endpoint::set_message_handler
void set_message_handler(message_handler h)
Definition:
endpoint.hpp:322
websocketpp::log::elevel::all
static level const all
Special aggregate value representing "all levels".
Definition:
levels.hpp:80
websocketpp::endpoint::send
void send(connection_hdl hdl, std::string const &payload, frame::opcode::value op, lib::error_code &ec)
Create a message and add it to the outgoing send queue (exception free)
Definition:
endpoint_impl.hpp:162
server.hpp
ndnSIM
NFD
websocketpp
tutorials
utility_server
step2.cpp
Generated on Fri May 6 2022 12:34:14 for ndnSIM by
1.8.13