Chatsync  bbffde5c0c672a526bdc83637acf66dc20a80fbf
ircchannel.hpp
Go to the documentation of this file.
1 #pragma once
2 #include <chrono>
3 #include "channel.hpp"
4 #include "hub.hpp"
5 
6 namespace ircChannel {
7 
8  constexpr size_t irc_message_max = 256;
9  constexpr std::chrono::duration<double> max_timeout(5.0);
17 
18  const std::string _server;
19  const uint32_t _port;
20  const std::string _channel;
21  std::chrono::time_point<std::chrono::high_resolution_clock> _ping_time;
24  mutable std::mutex _pong_time_mutex;
25  mutable std::chrono::time_point<std::chrono::high_resolution_clock> _last_pong_time;
26  mutable std::atomic_bool _connection_issue ;
27 
31  void registerConnection();
35  void ping();
39  void pong() const;
45  void checkTimeout();
46  std::future<void> activate() override;
47  const messaging::message_ptr parse(const char* line) const override;
48 
50  const messaging::message_ptr parseImpl(const std::string& toParse) const;
51  public:
52  explicit IrcChannel(Hub::Hub* hub, const std::string& config);
53  ~IrcChannel();
54 
55  std::string type() const override {return "irc"; };
56 
57  protected:
61  void tick() override;
62 
63  void incoming(const messaging::message_ptr&& msg) override;
64  };
66 }
const uint32_t _port
Definition: ircchannel.hpp:19
void pong() const
Definition: ircchannel.cpp:185
void registerConnection()
Definition: ircchannel.cpp:147
std::mutex _pong_time_mutex
Definition: ircchannel.hpp:24
constexpr size_t irc_message_max
Definition: ircchannel.hpp:8
Definition: config.cpp:10
constexpr std::chrono::duration< double > max_timeout(5.0)
std::shared_ptr< const Message > message_ptr
Definition: message.hpp:36
void incoming(const messaging::message_ptr &&msg) override
Definition: ircchannel.cpp:53
void tick() override
Definition: ircchannel.cpp:208
Definition: channel.hpp:225
const std::string _channel
Definition: ircchannel.hpp:20
const messaging::message_ptr parseImpl(const std::string &toParse) const
Definition: ircchannel.cpp:92
void checkTimeout()
Definition: ircchannel.cpp:199
std::future< void > activate() override
Definition: ircchannel.cpp:30
Definition: ircchannel.cpp:12
Definition: channel.hpp:63
~IrcChannel()
Definition: ircchannel.cpp:48
const messaging::message_ptr parse(const char *line) const override
Definition: ircchannel.cpp:73
Definition: hub.hpp:24
Definition: ircchannel.hpp:16
IrcChannel(Hub::Hub *hub, const std::string &config)
Definition: ircchannel.cpp:13
std::chrono::time_point< std::chrono::high_resolution_clock > _ping_time
Definition: ircchannel.hpp:21
const std::string _server
Definition: ircchannel.hpp:18
std::chrono::time_point< std::chrono::high_resolution_clock > _last_pong_time
Definition: ircchannel.hpp:25
std::atomic_bool _connection_issue
Definition: ircchannel.hpp:26
std::string type() const override
Definition: ircchannel.hpp:55
static const channeling::ChannelCreatorImpl< IrcChannel > creator
Definition: ircchannel.hpp:49
void ping()
Definition: ircchannel.cpp:179