+ static uint32_t listener_id = 1;
+ sensor_handler *sensor;
+ cmd_listener_connect_t buf;
+
+ msg.disclose((char *)&buf);
+
+ sensor = m_manager->get_sensor(buf.sensor);
+ retv_if(!sensor, OP_ERROR);
+
+ sensor_listener_proxy *listener =
+ new(std::nothrow) sensor_listener_proxy(listener_id, sensor, ch);
+ retvm_if(!listener, OP_ERROR, "Failed to allocate memory");
+
+ buf.listener_id = listener_id;
+
+ message reply;
+ reply.enclose((const char *)&buf, sizeof(buf));
+ reply.header()->err = OP_SUCCESS;
+
+ if (!ch->send_sync(&reply))
+ return OP_ERROR;
+
+ _I("Connected sensor_listener[fd(%d) -> id(%u)]", ch->get_fd(), listener_id);
+ listener_id++;
+ m_listeners[ch] = listener;
+
+ return OP_SUCCESS;