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)
{
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();
/**
* 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);
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);
/**
* @}
*/
}
}
}
+
+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;
+}