fixed adding file problem
[c11concurrency-benchmarks.git] / gdax-orderbook-hpp / demo / dependencies / websocketpp-0.7.0 / examples / dev / main.cpp
1 //#ifndef _WEBSOCKETPP_CPP11_STL_
2 //    #define _WEBSOCKETPP_CPP11_STL_
3 //#endif
4
5 #include <random>
6 #include <boost/timer/timer.hpp>
7
8 #include <websocketpp/config/core.hpp>
9
10 //#include <websocketpp/security/none.hpp>
11
12 //#include <websocketpp/concurrency/none.hpp>
13 //#include <websocketpp/concurrency/stl.hpp>
14
15 //#include <websocketpp/transport/iostream.hpp>
16 #include <websocketpp/server.hpp>
17
18 #include <iostream>
19 #include <sstream>
20
21 //typedef websocketpp::concurrency::stl concurrency;
22 //typedef websocketpp::transport::iostream<concurrency> transport;
23 //typedef websocketpp::server<concurrency,transport> server;
24 typedef websocketpp::server<websocketpp::config::core> server;
25
26 /*class handler : public server::handler {
27     bool validate(connection_ptr con) {
28         std::cout << "handler validate" << std::endl;
29         if (con->get_origin() != "http://www.example.com") {
30             con->set_status(websocketpp::http::status_code::FORBIDDEN);
31             return false;
32         }
33         return true;
34     }
35
36     void http(connection_ptr con) {
37         std::cout << "handler http" << std::endl;
38     }
39
40     void on_load(connection_ptr con, ptr old_handler) {
41         std::cout << "handler on_load" << std::endl;
42     }
43     void on_unload(connection_ptr con, ptr new_handler) {
44         std::cout << "handler on_unload" << std::endl;
45     }
46
47     void on_open(connection_ptr con) {
48         std::cout << "handler on_open" << std::endl;
49     }
50     void on_fail(connection_ptr con) {
51         std::cout << "handler on_fail" << std::endl;
52     }
53
54     void on_message(connection_ptr con, message_ptr msg) {
55         std::cout << "handler on_message" << std::endl;
56
57
58     }
59
60     void on_close(connection_ptr con) {
61         std::cout << "handler on_close" << std::endl;
62     }
63 };*/
64
65 int main() {
66     typedef websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager>
67         message_type;
68     typedef websocketpp::message_buffer::alloc::con_msg_manager<message_type>
69         con_msg_man_type;
70
71     con_msg_man_type::ptr manager = websocketpp::lib::make_shared<con_msg_man_type>();
72
73     size_t foo = 1024;
74
75     message_type::ptr input = manager->get_message(websocketpp::frame::opcode::TEXT,foo);
76     message_type::ptr output = manager->get_message(websocketpp::frame::opcode::TEXT,foo);
77     websocketpp::frame::masking_key_type key;
78
79     std::random_device dev;
80
81
82
83     key.i = 0x12345678;
84
85     double m = 18094238402394.0824923;
86
87     /*std::cout << "Some Math" << std::endl;
88     {
89         boost::timer::auto_cpu_timer t;
90
91         for (int i = 0; i < foo; i++) {
92             m /= 1.001;
93         }
94
95     }*/
96
97     std::cout << m << std::endl;
98
99     std::cout << "Random Gen" << std::endl;
100     {
101         boost::timer::auto_cpu_timer t;
102
103         input->get_raw_payload().replace(0,foo,foo,'\0');
104         output->get_raw_payload().replace(0,foo,foo,'\0');
105     }
106
107     std::cout << "Out of place accelerated" << std::endl;
108     {
109         boost::timer::auto_cpu_timer t;
110
111         websocketpp::frame::word_mask_exact(reinterpret_cast<uint8_t*>(const_cast<char*>(input->get_raw_payload().data())), reinterpret_cast<uint8_t*>(const_cast<char*>(output->get_raw_payload().data())), foo, key);
112     }
113
114     std::cout << websocketpp::utility::to_hex(input->get_payload().c_str(),20) << std::endl;
115     std::cout << websocketpp::utility::to_hex(output->get_payload().c_str(),20) << std::endl;
116
117     input->get_raw_payload().replace(0,foo,foo,'\0');
118     output->get_raw_payload().replace(0,foo,foo,'\0');
119
120     std::cout << "In place accelerated" << std::endl;
121     {
122         boost::timer::auto_cpu_timer t;
123
124         websocketpp::frame::word_mask_exact(reinterpret_cast<uint8_t*>(const_cast<char*>(input->get_raw_payload().data())), reinterpret_cast<uint8_t*>(const_cast<char*>(input->get_raw_payload().data())), foo, key);
125     }
126
127     std::cout << websocketpp::utility::to_hex(input->get_payload().c_str(),20) << std::endl;
128     std::cout << websocketpp::utility::to_hex(output->get_payload().c_str(),20) << std::endl;
129
130     input->get_raw_payload().replace(0,foo,foo,'\0');
131     output->get_raw_payload().replace(0,foo,foo,'\0');
132     std::cout << "Out of place byte by byte" << std::endl;
133     {
134         boost::timer::auto_cpu_timer t;
135
136         websocketpp::frame::byte_mask(input->get_raw_payload().begin(), input->get_raw_payload().end(), output->get_raw_payload().begin(), key);
137     }
138
139     std::cout << websocketpp::utility::to_hex(input->get_payload().c_str(),20) << std::endl;
140     std::cout << websocketpp::utility::to_hex(output->get_payload().c_str(),20) << std::endl;
141
142     input->get_raw_payload().replace(0,foo,foo,'\0');
143     output->get_raw_payload().replace(0,foo,foo,'\0');
144     std::cout << "In place byte by byte" << std::endl;
145     {
146         boost::timer::auto_cpu_timer t;
147
148         websocketpp::frame::byte_mask(input->get_raw_payload().begin(), input->get_raw_payload().end(), input->get_raw_payload().begin(), key);
149     }
150
151     std::cout << websocketpp::utility::to_hex(input->get_payload().c_str(),20) << std::endl;
152     std::cout << websocketpp::utility::to_hex(output->get_payload().c_str(),20) << std::endl;
153
154     input->get_raw_payload().replace(0,foo,foo,'a');
155     output->get_raw_payload().replace(0,foo,foo,'b');
156     std::cout << "Copy" << std::endl;
157     {
158         boost::timer::auto_cpu_timer t;
159
160         std::copy(input->get_raw_payload().begin(), input->get_raw_payload().end(), output->get_raw_payload().begin());
161     }
162
163     std::cout << websocketpp::utility::to_hex(input->get_payload().c_str(),20) << std::endl;
164     std::cout << websocketpp::utility::to_hex(output->get_payload().c_str(),20) << std::endl;
165
166     /*server::handler::ptr h(new handler());
167
168     server test_server(h);
169     server::connection_ptr con;
170
171     std::stringstream output;
172
173     test_server.register_ostream(&output);
174
175     con = test_server.get_connection();
176
177     con->start();
178
179     //foo.handle_accept(con,true);
180
181     std::stringstream input;
182     input << "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\nOrigin: http://www.example.com\r\n\r\n";
183     //input << "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n";
184     input >> *con;
185
186     std::stringstream input2;
187     input2 << "messageabc2";
188     input2 >> *con;
189
190     std::stringstream input3;
191     input3 << "messageabc3";
192     input3 >> *con;
193
194     std::stringstream input4;
195     input4 << "close";
196     input4 >> *con;
197
198     std::cout << "connection output:" << std::endl;
199     std::cout << output.str() << std::endl;*/
200 }