Merge branch 'devel/tizen' into tizen
[platform/core/system/sensord.git] / src / shared / channel.cpp
index b56d49e..e407aee 100644 (file)
@@ -24,6 +24,9 @@
 #include <memory>
 
 #include "sensor_log.h"
+#include "channel_event_handler.h"
+
+#define SYSTEMD_SOCK_BUF_SIZE 40000
 
 using namespace ipc;
 
@@ -74,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;
@@ -109,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())
@@ -146,7 +157,7 @@ bool channel::send(message *msg)
 
        /* TODO: check buffer size(is there any linux api for this?) */
        int cur_buffer_size = m_socket->get_current_buffer_size();
-       retvm_if(!cur_buffer_size > 40000, false, "Failed to send data");
+       retvm_if(cur_buffer_size > SYSTEMD_SOCK_BUF_SIZE, false, "Failed to send data");
 
        send_event_handler *handler = new(std::nothrow) send_event_handler(this, msg);
        retvm_if(!handler, false, "Failed to allocate memory");
@@ -191,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 */
@@ -210,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);
        }