mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
first (partially) working copy of the refactored branch
This commit is contained in:
@@ -29,40 +29,35 @@
|
||||
#define ECHO_SERVER_HANDLER_HPP
|
||||
|
||||
#include "../../src/websocketpp.hpp"
|
||||
#include "../../src/websocket_connection_handler.hpp"
|
||||
#include "../../src/interfaces/session.hpp"
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
using websocketpp::session::server_ptr;
|
||||
using websocketpp::session::server_handler;
|
||||
|
||||
namespace websocketecho {
|
||||
|
||||
template <typename session_type>
|
||||
class echo_server_handler : public websocketpp::connection_handler<session_type> {
|
||||
class echo_server_handler : public server_handler {
|
||||
public:
|
||||
//typedef boost::shared_ptr<echo_server_handler<session_type> >
|
||||
//typedef typename websocketpp::connection_handler<session_type>::ptr session_ptr;
|
||||
typedef typename websocketpp::connection_handler<session_type>::session_ptr session_ptr;
|
||||
|
||||
echo_server_handler() {}
|
||||
virtual ~echo_server_handler() {}
|
||||
|
||||
// The echo server allows all domains is protocol free.
|
||||
void validate(session_ptr client) {}
|
||||
void validate(server_ptr session) {}
|
||||
|
||||
// an echo server is stateless.
|
||||
// The handler has no need to keep track of connected clients.
|
||||
void on_fail(session_ptr client) {}
|
||||
void on_open(session_ptr client) {}
|
||||
void on_close(session_ptr client) {}
|
||||
void on_fail(server_ptr session) {}
|
||||
void on_open(server_ptr session) {}
|
||||
void on_close(server_ptr session) {}
|
||||
|
||||
// both text and binary messages are echoed back to the sending client.
|
||||
void on_message(session_ptr client,const std::string &msg) {
|
||||
client->send(msg);
|
||||
void on_message(server_ptr session,websocketpp::utf8_string_ptr msg) {
|
||||
std::cout << *msg << std::endl;
|
||||
session->send(*msg);
|
||||
}
|
||||
void on_message(session_ptr client,
|
||||
const std::vector<unsigned char> &data) {
|
||||
client->send(data);
|
||||
void on_message(server_ptr session,websocketpp::binary_string_ptr data) {
|
||||
session->send(*data);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -53,24 +53,17 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
|
||||
try {
|
||||
boost::asio::io_service io_service;
|
||||
tcp::endpoint endpoint(tcp::v6(), port);
|
||||
// create an instance of our handler
|
||||
server_handler_ptr default_handler(new websocketecho::echo_server_handler());
|
||||
|
||||
// create a server that listens on port `port` and uses our handler
|
||||
typedef boost::shared_ptr< websocketpp::server::server<> > server_ptr;
|
||||
|
||||
using websocketpp::server;
|
||||
server_ptr server(new websocketpp::server::server<>(port,default_handler));
|
||||
|
||||
typedef boost::shared_ptr< server<> > server_ptr;
|
||||
//typedef server<>::ptr server_ptr;
|
||||
server->elog().set_levels(websocketpp::log::elevel::DEVEL,websocketpp::log::elevel::FATAL);
|
||||
|
||||
server_ptr s(new server<>(io_service,endpoint));
|
||||
|
||||
server<>::connection_handler_ptr handler = s->make_handler<websocketecho::echo_server_handler>();
|
||||
|
||||
s->set_default_connection_handler(handler);
|
||||
|
||||
s->elog().set_levels(websocketpp::log::elevel::DEVEL,websocketpp::log::elevel::FATAL);
|
||||
|
||||
s->alog().set_level(websocketpp::log::alevel::CONNECT);
|
||||
s->alog().set_level(websocketpp::log::alevel::DEBUG_HANDSHAKE);
|
||||
server->alog().set_level(websocketpp::log::alevel::ALL);
|
||||
|
||||
//server->parse_command_line(argc, argv);
|
||||
|
||||
@@ -80,15 +73,12 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
// bump up max message size to maximum since we may be using the echo
|
||||
// server to test performance and protocol extremes.
|
||||
s->set_max_message_size(websocketpp::frame::limits::PAYLOAD_SIZE_JUMBO);
|
||||
//server->set_max_message_size(websocketpp::frame::limits::PAYLOAD_SIZE_JUMBO);
|
||||
|
||||
// start the server
|
||||
s->start_accept();
|
||||
server->run();
|
||||
|
||||
std::cout << "Starting echo server on " << full_host << std::endl;
|
||||
|
||||
// start asio
|
||||
io_service.run();
|
||||
} catch (std::exception& e) {
|
||||
std::cerr << "Exception: " << e.what() << std::endl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user