first (partially) working copy of the refactored branch

This commit is contained in:
Peter Thorson
2011-11-10 20:02:43 -06:00
parent 3e7d71c9a1
commit 6df22f5d70
15 changed files with 1267 additions and 271 deletions

View File

@@ -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);
}
};

View File

@@ -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;
}