edbus: Add edbus_proxy_property_local_get and get_all

Patch by: José Roberto de Souza  <zehortigoza@profusion.mobi>



SVN revision: 78546
This commit is contained in:
José Roberto de Souza 2012-10-26 18:19:42 +00:00 committed by Lucas De Marchi
parent 6f52b71822
commit e8b9c7d42e
3 changed files with 56 additions and 1 deletions

View File

@ -15,6 +15,22 @@ _timer1_cb(void *data)
return EINA_TRUE;
}
static Eina_Bool
_read_cache(void *data)
{
EDBus_Proxy *proxy = data;
const char *txt;
int num;
Eina_Value *v = edbus_proxy_property_local_get(proxy, "text");
eina_value_get(v, &txt);
v = edbus_proxy_property_local_get(proxy, "int32");
eina_value_get(v, &num);
printf("Read cache: %s | %d\n", txt, num);
return EINA_FALSE;
}
static void
on_plus_one(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
{
@ -298,7 +314,8 @@ main(void)
pending = edbus_proxy_property_get(test2_proxy, "Resp2", get_property_resp2, test2_proxy);
edbus_proxy_event_callback_add(test2_proxy, EDBUS_PROXY_EVENT_PROPERTY_CHANGED, _property_changed, NULL);
ecore_timer_add(20, _timer1_cb, NULL);
ecore_timer_add(10, _read_cache, test2_proxy);
ecore_timer_add(50, _timer1_cb, NULL);
ecore_main_loop_begin();

View File

@ -91,6 +91,11 @@ EAPI EDBus_Pending *edbus_object_introspect(EDBus_Object *obj, EDBus_Mess
/**
* Enable or disable local cache of properties.
*
* After enable you can call edbus_proxy_property_local_get() or
* edbus_proxy_property_local_get_all() to get cached properties.
*
* @note After enable, it will asynchrony get the properties values.
*/
EAPI void edbus_proxy_properties_monitor(EDBus_Proxy *proxy, Eina_Bool enable);
@ -98,6 +103,22 @@ EAPI EDBus_Pending *edbus_proxy_property_get(EDBus_Proxy *proxy, const ch
EAPI EDBus_Pending *edbus_proxy_property_set(EDBus_Proxy *proxy, const char *name, char type, const void *value, EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2, 4);
EAPI EDBus_Pending *edbus_proxy_property_get_all(EDBus_Proxy *proxy, EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2);
EAPI EDBus_Signal_Handler *edbus_proxy_properties_changed_callback_add(EDBus_Proxy *proxy, EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2);
/**
* Return the cached value of property.
* This only work if you have enable edbus_proxy_properties_monitor or
* if you have call edbus_proxy_event_callback_add of type
* EDBUS_PROXY_EVENT_PROPERTY_CHANGED and the property you want had changed.
*/
EAPI Eina_Value *edbus_proxy_property_local_get(EDBus_Proxy *proxy, const char *name) EINA_ARG_NONNULL(1, 2);
/**
* Return a Eina_Hash with all cached properties.
* This only work if you have enable edbus_proxy_properties_monitor or
* if you have call edbus_proxy_event_callback_add of type
* EDBUS_PROXY_EVENT_PROPERTY_CHANGED.
*/
EAPI const Eina_Hash *edbus_proxy_property_local_get_all(EDBus_Proxy *proxy) EINA_ARG_NONNULL(1);
/**
* @}
*/

View File

@ -753,3 +753,20 @@ edbus_proxy_properties_monitor(EDBus_Proxy *proxy, Eina_Bool enable)
}
}
}
EAPI Eina_Value *
edbus_proxy_property_local_get(EDBus_Proxy *proxy, const char *name)
{
EDBUS_PROXY_CHECK_RETVAL(proxy, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy->props, NULL);
return eina_hash_find(proxy->props, name);
}
EAPI const Eina_Hash *
edbus_proxy_property_local_get_all(EDBus_Proxy *proxy)
{
EDBUS_PROXY_CHECK_RETVAL(proxy, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy->props, NULL);
return proxy->props;
}