tcpsyncclient.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef TCPSYNCCLIENT_H
  2. #define TCPSYNCCLIENT_H
  3. #include <iostream>
  4. #include <map>
  5. #include <boost/thread.hpp>
  6. #include <boost/bind.hpp>
  7. #include <boost/asio.hpp>
  8. #include <boost/shared_ptr.hpp>
  9. #include <boost/filesystem.hpp>
  10. #include <boost/enable_shared_from_this.hpp>
  11. #include <boost/property_tree/ptree.hpp>
  12. #include <boost/property_tree/json_parser.hpp>
  13. using boost::system::error_code;
  14. class TcpSyncClient
  15. {
  16. public:
  17. TcpSyncClient(boost::asio::io_service& s, std::string config);
  18. void start(); // Запуск бота
  19. bool write(std::string); // Написать в сокет
  20. bool write_to_user(std::string, std::string); // Написать пользователю
  21. bool write_to_channel(std::string); // Написать в целевой чат
  22. std::string get_msg(); // Ник сообщения боту
  23. std::string get_msg_nick(); // Сообщение боту
  24. std::string get_raw(); // Ник сообщения на канале
  25. std::string get_raw_nick(); // Сообщение на канале
  26. bool have_pm_from_user(std::string); // Для получения сырого сообщения
  27. ~TcpSyncClient();
  28. bool to_read; // Индикаторы наличия информации для чтения
  29. bool to_raw;
  30. bool to_start;
  31. std::map<std::string, std::string> params =
  32. {
  33. { "address", "127.0.0.1" },
  34. { "port", "6667" },
  35. { "channel", "#general" },
  36. { "nickname", "bot" },
  37. { "password", "x" }
  38. };
  39. private:
  40. void log(std::string);
  41. bool connect_to_ep();
  42. size_t read_complete(const error_code&, size_t);
  43. void read_answer();
  44. void process_msg();
  45. void answer_to_ping(std::string);
  46. void connect_to_server();
  47. bool read_config();
  48. int m_already_read;
  49. char m_buff[512];
  50. boost::asio::ip::tcp::endpoint m_ep;
  51. boost::asio::ip::tcp::socket m_sock;
  52. std::string m_msg;
  53. std::string m_msg_nickname;
  54. std::string m_raw;
  55. std::string m_raw_nickname;
  56. std::string raw_msg_from_socket;
  57. std::string m_config_file = "ircbot.json";
  58. const std::string m_user = "ircabot";
  59. const std::string m_realname = "https://notabug.org/acetone/ircabot";
  60. };
  61. #endif // TCPSYNCCLIENT_H