fixed adding file problem
[c11concurrency-benchmarks.git] / gdax-orderbook-hpp / demo / dependencies / websocketpp-0.7.0 / examples / echo_server / echo_server.cpp
1 #include <websocketpp/config/asio_no_tls.hpp>
2
3 #include <websocketpp/server.hpp>
4
5 #include <iostream>
6
7 typedef websocketpp::server<websocketpp::config::asio> server;
8
9 using websocketpp::lib::placeholders::_1;
10 using websocketpp::lib::placeholders::_2;
11 using websocketpp::lib::bind;
12
13 // pull out the type of messages sent by our config
14 typedef server::message_ptr message_ptr;
15
16 // Define a callback to handle incoming messages
17 void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
18     std::cout << "on_message called with hdl: " << hdl.lock().get()
19               << " and message: " << msg->get_payload()
20               << std::endl;
21
22     // check for a special command to instruct the server to stop listening so
23     // it can be cleanly exited.
24     if (msg->get_payload() == "stop-listening") {
25         s->stop_listening();
26         return;
27     }
28
29     try {
30         s->send(hdl, msg->get_payload(), msg->get_opcode());
31     } catch (const websocketpp::lib::error_code& e) {
32         std::cout << "Echo failed because: " << e
33                   << "(" << e.message() << ")" << std::endl;
34     }
35 }
36
37 int main() {
38     // Create a server endpoint
39     server echo_server;
40
41     try {
42         // Set logging settings
43         echo_server.set_access_channels(websocketpp::log::alevel::all);
44         echo_server.clear_access_channels(websocketpp::log::alevel::frame_payload);
45
46         // Initialize Asio
47         echo_server.init_asio();
48
49         // Register our message handler
50         echo_server.set_message_handler(bind(&on_message,&echo_server,::_1,::_2));
51
52         // Listen on port 9002
53         echo_server.listen(9002);
54
55         // Start the server accept loop
56         echo_server.start_accept();
57
58         // Start the ASIO io_service run loop
59         echo_server.run();
60     } catch (websocketpp::exception const & e) {
61         std::cout << e.what() << std::endl;
62     } catch (...) {
63         std::cout << "other exception" << std::endl;
64     }
65 }