protocol.h 902 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef PROTOCOL_H
  2. #define PROTOCOL_H
  3. #include <string>
  4. #include <utility>
  5. #include "util.h"
  6. class protocol
  7. {
  8. public:
  9. class state
  10. {
  11. public:
  12. enum type
  13. {
  14. connected,
  15. disconnected
  16. };
  17. };
  18. typedef std::pair<state::type, std::string> result;
  19. public:
  20. explicit protocol(const context& context);
  21. result openConnection(const std::string& address);
  22. result processMessage(const std::string& message);
  23. private:
  24. class internalState
  25. {
  26. public:
  27. enum type
  28. {
  29. none,
  30. connect,
  31. helo,
  32. auth_login_user,
  33. auth_login_pass,
  34. mail_from,
  35. rcpt_to,
  36. data,
  37. mime_oundary,
  38. image_data,
  39. disconnect
  40. };
  41. };
  42. private:
  43. result answer(state::type state, std::string answer) const;
  44. void appendMessage(const std::string& message);
  45. private:
  46. internalState::type m_internalState;
  47. std::string m_address;
  48. std::string m_message;
  49. const context& m_context;
  50. };
  51. #endif // PROTOCOL_H