Merge branch 'devel/tizen' into tizen
[platform/core/system/sensord.git] / src / shared / channel.cpp
index 8dc25ac..e407aee 100644 (file)
@@ -24,6 +24,7 @@
 #include <memory>
 
 #include "sensor_log.h"
+#include "channel_event_handler.h"
 
 #define SYSTEMD_SOCK_BUF_SIZE 40000
 
@@ -76,7 +77,7 @@ public:
                if (condition & (EVENT_OUT | EVENT_HUP))
                        return false;
 
-               if (!m_ch->read_sync(msg))
+               if (!m_ch->read_sync(msg, false))
                        return false;
 
                return false;
@@ -111,6 +112,14 @@ void channel::bind(channel_handler *handler, event_loop *loop)
                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())
@@ -193,14 +202,14 @@ bool channel::read(void)
        return true;
 }
 
-bool channel::read_sync(message &msg)
+bool channel::read_sync(message &msg, bool select)
 {
        message_header header;
        ssize_t size = 0;
        char buf[MAX_MSG_CAPACITY];
 
        /* header */
-       size = m_socket->recv(&header, sizeof(message_header), true);
+       size = m_socket->recv(&header, sizeof(message_header), select);
        retv_if(size <= 0, false);
 
        /* check error from header */
@@ -212,7 +221,7 @@ bool channel::read_sync(message &msg)
 
        /* body */
        if (header.length > 0) {
-               size = m_socket->recv(&buf, header.length, true);
+               size = m_socket->recv(&buf, header.length, select);
                retv_if(size <= 0, false);
        }