g_variant_get(parameters, "(siia(qs)a(ss)iiavxx)",
&request.host_address,
&request.connectivity_type,
- &request.types,
+ &request.type,
&options,
&query,
&request.observation_info.action,
- &request.observation_info.observer_id,
+ &request.observation_info.observe_id,
&repr_iter,
&request.oic_request_h,
&request.oic_resource_h);
g_variant_iter_free(repr_iter);
/* for iotcon_resource_notify */
- if (IOTCON_REQUEST_OBSERVE & request.types) {
- int observer_id = request.observation_info.observer_id;
- if (IOTCON_OBSERVE_REGISTER == request.observation_info.action) {
- if (NULL == resource->observers)
- iotcon_observers_create(&resource->observers);
- iotcon_observers_add(resource->observers, observer_id);
- } else if (IOTCON_OBSERVE_DEREGISTER == request.observation_info.action) {
- iotcon_observers_remove(resource->observers, observer_id);
- }
+ if (IOTCON_OBSERVE_REGISTER == request.observation_info.action) {
+ if (NULL == resource->observers)
+ iotcon_observers_create(&resource->observers);
+ iotcon_observers_add(resource->observers, request.observation_info.observe_id);
+ } else if (IOTCON_OBSERVE_DEREGISTER == request.observation_info.action) {
+ iotcon_observers_remove(resource->observers, request.observation_info.observe_id);
}
if (cb)
iotcon_resource_h *resource_handle)
{
int ret;
+ unsigned int sub_id;
const gchar **types;
GError *error = NULL;
iotcon_resource_h resource;
- unsigned int sub_id, signal_number;
+ int64_t signal_number;
char signal_name[IC_DBUS_SIGNAL_LENGTH];
RETV_IF(NULL == icl_dbus_get_object(), IOTCON_ERROR_DBUS);
return IOTCON_ERROR_OUT_OF_MEMORY;
}
- signal_number = icl_dbus_generate_signal_number();
-
ic_dbus_call_register_resource_sync(icl_dbus_get_object(), uri_path, types, ifaces,
- properties, signal_number, &(resource->handle), NULL, &error);
+ properties, &signal_number, &(resource->handle), NULL, &error);
if (error) {
ERR("ic_dbus_call_register_resource_sync() Fail(%s)", error->message);
ret = icl_dbus_convert_dbus_error(error->code);
resource->ifaces = ifaces;
resource->properties = properties;
- snprintf(signal_name, sizeof(signal_name), "%s_%u", IC_DBUS_SIGNAL_REQUEST_HANDLER,
+ snprintf(signal_name, sizeof(signal_name), "%s_%llx", IC_DBUS_SIGNAL_REQUEST_HANDLER,
signal_number);
sub_id = icl_dbus_subscribe_signal(signal_name, resource, _icl_resource_conn_cleanup,
return ret;
}
resource->handle = 0;
+
icl_dbus_unsubscribe_signal(resource->sub_id);
+ resource->sub_id = 0;
return IOTCON_ERROR_NONE;
}
return ret;
}
-
API int iotcon_resource_set_request_handler(iotcon_resource_h resource,
- iotcon_request_handler_cb cb)
+ iotcon_request_handler_cb cb, void *user_data)
{
RETV_IF(NULL == resource, IOTCON_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == cb, IOTCON_ERROR_INVALID_PARAMETER);
- WARN("Request handler is changed");
+ DBG("Request handler is changed");
resource->cb = cb;
+ resource->user_data = user_data;
return IOTCON_ERROR_NONE;
}
else
obs = icl_dbus_observers_to_gvariant(resource->observers);
- ic_dbus_call_notify_sync(icl_dbus_get_object(), resource->handle, repr_gvar, obs, &ret,
- NULL, &error);
+ ic_dbus_call_notify_sync(icl_dbus_get_object(), resource->handle, repr_gvar, obs,
+ &ret, NULL, &error);
if (error) {
ERR("ic_dbus_call_notify_sync() Fail(%s)", error->message);
ret = icl_dbus_convert_dbus_error(error->code);