m_cmd_channel = m_client->connect(NULL);
retvm_if(!m_cmd_channel, false, "Failed to connect to server");
- m_evt_channel = m_client->connect(m_handler, &m_loop);
+ m_evt_channel = m_client->connect(m_handler, &m_loop, false);
retvm_if(!m_evt_channel, false, "Failed to connect to server");
ipc::message msg;
m_id = buf.listener_id;
m_connected.store(true);
+ m_evt_channel->bind();
+
_D("Listener ID[%d]", get_id());
return true;
#include <memory>
#include "sensor_log.h"
+#include "channel_event_handler.h"
#define SYSTEMD_SOCK_BUF_SIZE 40000
m_handler->connected(this);
}
+void channel::bind(void)
+{
+ ret_if(!m_loop);
+ m_event_id = m_loop->add_event(m_socket->get_fd(),
+ (EVENT_IN | EVENT_HUP | EVENT_NVAL),
+ dynamic_cast<channel_event_handler *>(m_handler));
+}
+
bool channel::connect(channel_handler *handler, event_loop *loop)
{
if (!m_socket->connect())
channel(socket *sock);
~channel();
+ /* TODO */
+ void bind(void);
void bind(channel_handler *handler, event_loop *loop);
bool connect(channel_handler *handler, event_loop *loop);
return connect(handler, NULL);
}
-channel *ipc_client::connect(channel_handler *handler, event_loop *loop)
+channel *ipc_client::connect(channel_handler *handler, event_loop *loop, bool bind)
{
socket *sock;
channel *ch;
ch->connect(ev_handler, loop);
- if (loop) {
+ if (loop && bind) {
uint64_t id = loop->add_event(sock->get_fd(),
(EVENT_IN | EVENT_HUP | EVENT_NVAL), ev_handler);
ch->set_event_id(id);
/* call channel->disconnect() after you have used it */
channel *connect(channel_handler *handler);
- channel *connect(channel_handler *handler, event_loop *loop);
+ /* TODO: remove bind parameter */
+ channel *connect(channel_handler *handler, event_loop *loop, bool bind = true);
private:
std::string m_path;