Implemented socket message templates. (#40)

Implemented socket message templates to support broadcast (shared_ptr) and to achieve buffer zero-copy.
This commit is contained in:
Ravin Perera
2019-10-23 13:04:57 +05:30
committed by GitHub
parent b4237f1285
commit 61b38bb0a0
16 changed files with 636 additions and 539 deletions

View File

@@ -1,3 +1,6 @@
#ifndef _HP_USER_SESSION_HANDLER_H_
#define _HP_USER_SESSION_HANDLER_H_
#include <boost/beast/core.hpp>
#include "../sock/socket_session_handler.hpp"
#include "../sock/socket_session.hpp"
@@ -5,12 +8,29 @@
namespace usr
{
class user_session_handler : public sock::socket_session_handler
/**
* Represents a message (bytes) that is sent to a user.
*/
class user_outbound_message : public sock::outbound_message
{
// Contains message bytes.
std::string msg;
public:
void on_connect(sock::socket_session *session);
void on_message(sock::socket_session *session, std::string &&message);
void on_close(sock::socket_session *session);
user_outbound_message(std::string &&_msg);
// Returns the buffer that should be written to the socket.
virtual std::string_view buffer();
};
} // namespace usr
class user_session_handler : public sock::socket_session_handler<user_outbound_message>
{
public:
void on_connect(sock::socket_session<user_outbound_message> *session);
void on_message(sock::socket_session<user_outbound_message> *session, std::string_view message);
void on_close(sock::socket_session<user_outbound_message> *session);
};
} // namespace usr
#endif