refectors session into client_session/server_session/core, adds client handler and chat_client example. Client functionality is experimental and non-compliant at the moment.

This commit is contained in:
Peter Thorson
2011-09-26 09:49:52 -05:00
parent 7d938df15e
commit da1795feac
29 changed files with 2100 additions and 452 deletions

View File

@@ -39,7 +39,7 @@ namespace websocketpp {
}
#include "websocketpp.hpp"
#include "websocket_session.hpp"
#include "websocket_server_session.hpp"
#include "websocket_connection_handler.hpp"
using boost::asio::ip::tcp;
@@ -61,6 +61,31 @@ private:
class server : public boost::enable_shared_from_this<server> {
public:
// System logging levels
/*static const uint16_t LOG_ALL = 0;
static const uint16_t LOG_DEBUG = 1;
static const uint16_t LOG_INFO = 2;
static const uint16_t LOG_WARN = 3;
static const uint16_t LOG_ERROR = 4;
static const uint16_t LOG_FATAL = 5;
static const uint16_t LOG_OFF = 6;
// Access logging controls
// Individual bits
static const uint16_t ALOG_CONNECT = 0x1;
static const uint16_t ALOG_DISCONNECT = 0x2;
static const uint16_t ALOG_MISC_CONTROL = 0x4;
static const uint16_t ALOG_FRAME = 0x8;
static const uint16_t ALOG_MESSAGE = 0x10;
static const uint16_t ALOG_INFO = 0x20;
static const uint16_t ALOG_HANDSHAKE = 0x40;
// Useful groups
static const uint16_t ALOG_OFF = 0x0;
static const uint16_t ALOG_CONTROL = ALOG_CONNECT
& ALOG_DISCONNECT
& ALOG_MISC_CONTROL;
static const uint16_t ALOG_ALL = 0xFFFF;
*/
server(boost::asio::io_service& io_service,
const tcp::endpoint& endpoint,
connection_handler_ptr defc);
@@ -68,7 +93,9 @@ class server : public boost::enable_shared_from_this<server> {
// creates a new session object and connects the next websocket
// connection to it.
void start_accept();
// INTERFACE FOR LOCAL APPLICATIONS
// Add or remove a host string (host:port) to the list of acceptable
// hosts to accept websocket connections from. Additions/deletions here
// only affect new connections.
@@ -77,6 +104,18 @@ class server : public boost::enable_shared_from_this<server> {
void set_max_message_size(uint64_t val);
// Test methods determine if a message of the given level should be
// written. elog shows all values above the level set. alog shows only
// the values explicitly set.
bool test_elog_level(uint16_t level);
void set_elog_level(uint16_t level);
bool test_alog_level(uint16_t level);
void set_alog_level(uint16_t level);
void unset_alog_level(uint16_t level);
// INTERFACE FOR SESSIONS
// Check if this server will respond to this host.
bool validate_host(std::string host);
@@ -84,17 +123,18 @@ class server : public boost::enable_shared_from_this<server> {
bool validate_message_size(uint64_t val);
// write to the server's logs
void error_log(std::string msg);
void access_log(std::string msg);
void log(std::string msg,uint16_t level = LOG_ERROR);
void access_log(std::string msg,uint16_t level);
private:
// if no errors starts the session's read loop and returns to the
// start_accept phase.
void handle_accept(session_ptr session,
void handle_accept(server_session_ptr session,
const boost::system::error_code& error);
private:
uint16_t m_elog_level;
uint16_t m_alog_level;
std::set<std::string> m_hosts;
uint64_t m_max_message_size;
boost::asio::io_service& m_io_service;
@@ -104,4 +144,4 @@ class server : public boost::enable_shared_from_this<server> {
}
#endif // WEBSOCKET_SERVER_HPP
#endif // WEBSOCKET_SERVER_HPP