libki/include/ki/protocol/net/DMLSession.h

45 lines
948 B
C++

#pragma once
#include "Session.h"
#include "../dml/MessageManager.h"
namespace ki
{
namespace protocol
{
namespace net
{
enum class InvalidDMLMessageErrorCode
{
NONE,
UNKNOWN,
INVALID_HEADER_DATA,
INVALID_MESSAGE_DATA,
INVALID_SERVICE,
INVALID_MESSAGE_TYPE,
INSUFFICIENT_ACCESS
};
/**
* Implements an application protocol that uses the DML
* message system (as seen in Wizard101 and Pirate101).
*/
class DMLSession : public virtual Session
{
public:
DMLSession(uint16_t id, const dml::MessageManager &manager);
virtual ~DMLSession() = default;
const dml::MessageManager &get_manager() const;
void send_message(const dml::Message &message);
protected:
void on_application_message(const PacketHeader& header) override;
virtual void on_message(const dml::Message *message) {}
virtual void on_invalid_message(InvalidDMLMessageErrorCode error) {}
private:
const dml::MessageManager &m_manager;
};
}
}
}