23 std::runtime_error(message),
80 virtual void pollThread();
105 virtual const message_ptr parse(
const char* line)
const = 0;
136 virtual std::string
const& name()
const;
142 virtual std::string type()
const = 0;
159 virtual std::future<void> activate() = 0;
180 virtual int connect(
const std::string& hostname,
const uint32_t port)
const;
190 virtual int send(
const uint32_t fd,
const std::string& msg)
const;
197 virtual int send(
const std::string& msg)
const {
return send(_fd, msg); };
204 virtual int disconnect(
const uint32_t fd)
const;
214 virtual void tick() {
DEBUG <<
"Empty tick in " << _name; };
236 static Channel * create(
const std::string& classname,
Hub::Hub *
const hub,
const std::string&
config);
237 static void registerClass(
const std::string& classname,
ChannelCreator* creator);
238 static uint16_t
nextId() {
return id++; }
241 static std::atomic_int
id;
242 static std::map<std::string, ChannelCreator *>& get_table();
channel_error(std::string const &name, std::string const &message)
Definition: channel.hpp:22
virtual int disconnect() const
Definition: channel.hpp:209
std::shared_ptr< std::atomic< bool > > _hub_alive
Definition: channel.hpp:73
virtual int send(const std::string &msg) const
Definition: channel.hpp:197
activate_error(std::string const &name, std::string const &message)
Definition: channel.hpp:33
ChannelDirection direction() const
Definition: channel.hpp:149
std::unique_ptr< std::thread > _thread
Definition: channel.hpp:78
const ChannelDirection _direction
Definition: channel.hpp:85
unsigned int _reconnect_attempt
Definition: channel.hpp:64
Definition: channel.hpp:31
Definition: channel.hpp:233
Hub::Hub *const _hub
Definition: channel.hpp:86
Definition: config.cpp:10
const config::ConfigParser _config
Definition: channel.hpp:83
const std::string _name
Definition: channel.hpp:84
Definition: channel.hpp:217
std::shared_ptr< const Message > message_ptr
Definition: message.hpp:36
Definition: channel.hpp:225
static uint16_t nextId()
Definition: channel.hpp:238
Definition: channel.cpp:11
#define DEBUG
Definition: logging.hpp:14
static std::atomic_int id
Definition: channel.hpp:241
const std::string _name
Definition: channel.hpp:21
Definition: channel.hpp:40
const uint16_t _id
Definition: channel.hpp:121
Definition: message.hpp:6
std::atomic_bool _pipeRunning
Definition: channel.hpp:79
connection_error(std::string const &name, std::string const &message)
Definition: channel.hpp:42
Definition: channel.hpp:63
Definition: channel.hpp:19
std::atomic_bool _active
Definition: channel.hpp:75
ChannelCreatorImpl(const std::string &classname)
Definition: channel.hpp:228
virtual void tick()
Definition: channel.hpp:214
Channel & operator>>(const message_ptr msg, Channel &channel)
Definition: channel.cpp:39
virtual Channel * create(Hub::Hub *const hub, const std::string &config)
Definition: channel.hpp:230
Definition: config.hpp:114
int _fd
Definition: channel.hpp:81
ChannelDirection
Definition: config.hpp:13