Files
AlarmServer/protocol.h
T
2017-04-28 18:45:26 +02:00

64 lines
902 B
C++

#ifndef PROTOCOL_H
#define PROTOCOL_H
#include <string>
#include <utility>
#include "util.h"
class protocol
{
public:
class state
{
public:
enum type
{
connected,
disconnected
};
};
typedef std::pair<state::type, std::string> result;
public:
explicit protocol(const context& context);
result openConnection(const std::string& address);
result processMessage(const std::string& message);
private:
class internalState
{
public:
enum type
{
none,
connect,
helo,
auth_login_user,
auth_login_pass,
mail_from,
rcpt_to,
data,
mime_oundary,
image_data,
disconnect
};
};
private:
result answer(state::type state, std::string answer) const;
void appendMessage(const std::string& message);
private:
internalState::type m_internalState;
std::string m_address;
std::string m_message;
const context& m_context;
};
#endif // PROTOCOL_H