Enlightenment CVS committal

Author  : rephorm
Project : e17
Module  : proto

Dir     : e17/proto/e_dbus/src/lib/hal


Modified Files:
        E_Hal.h Makefile.am e_hal_device.c e_hal_manager.c 


Log Message:

playing around with the api a bit - use a single callback instead of separate 
reply / error callbacks

===================================================================
RCS file: /cvs/e/e17/proto/e_dbus/src/lib/hal/E_Hal.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- E_Hal.h     15 Mar 2007 08:59:19 -0000      1.1
+++ E_Hal.h     20 Mar 2007 06:34:13 -0000      1.2
@@ -17,7 +17,7 @@
  * For method calls, the return structs use the following naming convention:
  *   E_Hal_<Interface>_<Method_Call_Name>_Return
  */
-typedef void (*E_Hal_Callback_Func) (void *user_data, void *method_return);
+typedef void (*E_Hal_Callback_Func) (void *user_data, void *method_return, 
DBusError *error);
 
 
 /* message return types */
===================================================================
RCS file: /cvs/e/e17/proto/e_dbus/src/lib/hal/Makefile.am,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Makefile.am 15 Mar 2007 08:59:19 -0000      1.1
+++ Makefile.am 20 Mar 2007 06:34:13 -0000      1.2
@@ -6,7 +6,7 @@
 
 lib_LTLIBRARIES = libehal.la
 
-include_HEADERS = E_Hal.h
+include_HEADERS = E_Hal.h e_hal_private.h
 
 libehal_la_SOURCES = \
 E_Hal.h \
===================================================================
RCS file: /cvs/e/e17/proto/e_dbus/src/lib/hal/e_hal_device.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_hal_device.c      15 Mar 2007 08:59:19 -0000      1.1
+++ e_hal_device.c      20 Mar 2007 06:34:13 -0000      1.2
@@ -1,29 +1,28 @@
 #include <E_Hal.h>
+#include "e_hal_private.h"
 
 #define e_hal_device_call_new(udi, member) 
dbus_message_new_method_call(E_HAL_SENDER, udi, E_HAL_DEVICE_INTERFACE, member)
 #define e_hal_device_volume_call_new(udi, member) 
dbus_message_new_method_call(E_HAL_SENDER, udi, E_HAL_DEVICE_VOLUME_INTERFACE, 
member)
 
-static void cb_device_get_property(void *data, DBusMessage *msg);
-static void cb_device_get_all_properties(void *data, DBusMessage *msg);
-static void cb_device_query_capability(void *data, DBusMessage *msg);
+static void cb_device_get_property(void *data, DBusMessage *msg, DBusError 
*err);
+static void cb_device_get_all_properties(void *data, DBusMessage *msg, 
DBusError *err);
+static void cb_device_query_capability(void *data, DBusMessage *msg, DBusError 
*err);
 
 /* Device.GetProperty */
 static void 
-cb_device_get_property(void *data, DBusMessage *msg)
+cb_device_get_property(void *data, DBusMessage *msg, DBusError *err)
 {
   E_Hal_Callback *cb = data;
   E_Hal_Device_Get_Property_Return *ret;
-  DBusError err;
   DBusMessageIter iter;
-  dbus_bool_t val;
   int type;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
 
   ret = calloc(1, sizeof(E_Hal_Device_Get_Property_Return));
   if (!ret) return;
 
-  dbus_error_init(&err);
   dbus_message_iter_init(msg, &iter);
   type = dbus_message_iter_get_arg_type(&iter);
   switch(type)
@@ -42,15 +41,16 @@
       break;
   }
 
-  if (dbus_error_is_set(&err))
+  if (dbus_error_is_set(err))
   {
     /* XXX do something with an error */
-    printf("ERROR: %s,  %s!\n", err.name, err.message);
-    dbus_error_free(&err);
+    printf("ERROR: %s,  %s!\n", err->name, err->message);
+    dbus_error_free(err);
     goto error;
   }
 
-  cb->func(cb->user_data, ret);
+  if (cb->func)
+    cb->func(cb->user_data, ret, err);
 
 error:
   free(ret);
@@ -66,22 +66,20 @@
   cb = e_hal_callback_new(cb_func, data);
   msg = e_hal_device_call_new(udi, "GetProperty");
   dbus_message_append_args(msg, DBUS_TYPE_STRING, &property, 
DBUS_TYPE_INVALID);
-  return e_dbus_message_send(conn, msg, cb_device_get_property, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_device_get_property, -1, cb) ? 1 : 
0;
 }
 
 /* Device.GetAllProperties */
 
 static void 
-cb_device_get_all_properties(void *data, DBusMessage *msg)
+cb_device_get_all_properties(void *data, DBusMessage *msg, DBusError *err)
 {
   E_Hal_Callback *cb = data;
   E_Hal_Device_Get_All_Properties_Return *ret;
-  DBusError err;
   DBusMessageIter iter, a_iter, s_iter, v_iter;
-  dbus_bool_t val;
-  int type;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
 
   ret = calloc(1, sizeof(E_Hal_Device_Get_All_Properties_Return));
   if (!ret) return;
@@ -91,7 +89,6 @@
   ecore_hash_set_free_value(ret->properties, 
ECORE_FREE_CB(e_hal_property_free));
 
 
-  dbus_error_init(&err);
   dbus_message_iter_init(msg, &iter);
   if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_ARRAY &&
       dbus_message_iter_get_element_type(&iter) == DBUS_TYPE_DICT_ENTRY)
@@ -155,15 +152,16 @@
   }
   else printf("error, wrong type\n");
 
-  if (dbus_error_is_set(&err))
+  if (dbus_error_is_set(err))
   {
     /* XXX do something with an error */
-    printf("ERROR: %s,  %s!\n", err.name, err.message);
-    dbus_error_free(&err);
+    printf("ERROR: %s,  %s!\n", err->name, err->message);
+    dbus_error_free(err);
     goto error;
   }
 
-  cb->func(cb->user_data, ret);
+  if (cb->func)
+    cb->func(cb->user_data, ret, err);
 
 error:
   ecore_hash_destroy(ret->properties);
@@ -179,7 +177,7 @@
 
   cb = e_hal_callback_new(cb_func, data);
   msg = e_hal_device_call_new(udi, "GetAllProperties");
-  return e_dbus_message_send(conn, msg, cb_device_get_all_properties, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_device_get_all_properties, -1, cb) 
? 1 : 0;
 }
 
 
@@ -187,31 +185,31 @@
 /* bool Device.QueryCapability(string udi) */
 
 static void 
-cb_device_query_capability(void *data, DBusMessage *msg)
+cb_device_query_capability(void *data, DBusMessage *msg, DBusError *err)
 {
   E_Hal_Callback *cb = data;
   E_Hal_Device_Query_Capability_Return *ret;
-  DBusError err;
   dbus_bool_t val;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
 
   ret = calloc(1, sizeof(E_Hal_Device_Query_Capability_Return));
   if (!ret) return;
 
-  dbus_error_init(&err);
-  dbus_message_get_args(msg, &err, DBUS_TYPE_BOOLEAN, &val, DBUS_TYPE_INVALID);
+  dbus_message_get_args(msg, err, DBUS_TYPE_BOOLEAN, &val, DBUS_TYPE_INVALID);
 
-  if (dbus_error_is_set(&err))
+  if (dbus_error_is_set(err))
   {
     /* XXX do something with an error */
-    printf("ERROR: %s,  %s!\n", err.name, err.message);
-    dbus_error_free(&err);
+    printf("ERROR: %s,  %s!\n", err->name, err->message);
+    dbus_error_free(err);
     goto error;
   }
 
   ret->boolean = val;
-  cb->func(cb->user_data, ret);
+  if (cb->func)
+    cb->func(cb->user_data, ret, err);
 
 error:
   free(ret);
@@ -227,31 +225,24 @@
   cb = e_hal_callback_new(cb_func, data);
   msg = e_hal_device_call_new(udi, "QueryCapability");
   dbus_message_append_args(msg, DBUS_TYPE_STRING, &capability, 
DBUS_TYPE_INVALID);
-  return e_dbus_message_send(conn, msg, cb_device_query_capability, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_device_query_capability, -1, cb) ? 
1 : 0;
 }
 
 
 
 /* void Device.Mount(string mount_point, string fstype, array{string}options) 
*/
-static void
-cb_device_volume_mount_error(void *data, char *error_name, char *error_message)
-{
-  E_Hal_Callback *cb = data;
-  //XXX finish (and use in e_hal_device_volume_mount() instead of 
cb_error_generic...
-  e_hal_callback_free(cb);
-}
 
 static void 
-cb_device_volume_mount(void *data, DBusMessage *msg)
+cb_device_volume_mount(void *data, DBusMessage *msg, DBusError *err)
 {
   E_Hal_Callback *cb = data;
-  DBusError err;
-  char *val;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
   if (cb->func)
-    cb->func(cb->user_data, NULL);
+    cb->func(cb->user_data, NULL, err);
 
+error:
   e_hal_callback_free(cb);
 }
 
@@ -290,22 +281,23 @@
   }
   dbus_message_iter_close_container(&iter, &subiter) ;
 
-  return e_dbus_message_send(conn, msg, cb_device_volume_mount, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_device_volume_mount, -1, cb) ? 1 : 
0;
 }
 
 /* void Unmount(array{string} options) */
 
 static void 
-cb_device_volume_unmount(void *data, DBusMessage *msg)
+cb_device_volume_unmount(void *data, DBusMessage *msg, DBusError *err)
 {
   E_Hal_Callback *cb = data;
-  DBusError err;
-  char *val;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
+
   if (cb->func)
-    cb->func(cb->user_data, NULL);
+    cb->func(cb->user_data, NULL, err);
 
+error:
   e_hal_callback_free(cb);
 }
 
@@ -339,5 +331,5 @@
   }
   dbus_message_iter_close_container(&iter, &subiter) ;
 
-  return e_dbus_message_send(conn, msg, cb_device_volume_unmount, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_device_volume_unmount, -1, cb) ? 1 
: 0;
 }
===================================================================
RCS file: /cvs/e/e17/proto/e_dbus/src/lib/hal/e_hal_manager.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_hal_manager.c     15 Mar 2007 08:59:19 -0000      1.1
+++ e_hal_manager.c     20 Mar 2007 06:34:13 -0000      1.2
@@ -1,16 +1,19 @@
-#include <E_Hal.h>
+#include "E_Hal.h"
+#include "e_hal_private.h"
 
-static void cb_manager_get_all_devices(void *data, DBusMessage *msg);
-static void cb_manager_device_exists(void *data, DBusMessage *msg);
-static void cb_manager_find_device_string_match(void *data, DBusMessage *msg);
-static void cb_manager_find_device_by_capability(void *data, DBusMessage *msg);
+static void cb_manager_get_all_devices(void *data, DBusMessage *msg, DBusError 
*err);
+static void cb_manager_device_exists(void *data, DBusMessage *msg, DBusError 
*err);
+static void cb_manager_find_device_string_match(void *data, DBusMessage *msg, 
DBusError *err);
+static void cb_manager_find_device_by_capability(void *data, DBusMessage *msg, 
DBusError *err);
 
 #define e_hal_manager_call_new(member) 
dbus_message_new_method_call(E_HAL_SENDER, E_HAL_MANAGER_PATH, 
E_HAL_MANAGER_INTERFACE, member)
 
+
+
 /* GetAllDevices */
 
 static void 
-cb_manager_get_all_devices(void *data, DBusMessage *msg)
+cb_manager_get_all_devices(void *data, DBusMessage *msg, DBusError *err)
 {
   E_Hal_Callback *cb = data;
   E_Hal_Manager_Get_All_Devices_Return *ret;
@@ -18,8 +21,10 @@
 
   if (!cb) return;
 
+  E_HAL_HANDLE_ERROR(cb, err);
+
   ret = calloc(1, sizeof(E_Hal_Manager_Get_All_Devices_Return));
-  if (!ret) return;
+  if (!ret) goto error;
   ret->strings = ecore_list_new();
   if (!ret->strings) goto error;
 
@@ -38,7 +43,7 @@
     dbus_message_iter_next(&sub);
   }
 
-  cb->func(cb->user_data, ret);
+  cb->func(cb->user_data, ret, err);
 
 error:
   if (ret->strings) ecore_list_destroy(ret->strings);
@@ -52,40 +57,40 @@
   E_Hal_Callback *cb;
   DBusMessage *msg;
 
+  if (!cb_func) return 0;
   cb = e_hal_callback_new(cb_func, data);
   msg = e_hal_manager_call_new("GetAllDevices");
   /* add params here (for method calls that have them) */
-  return e_dbus_message_send(conn, msg, cb_manager_get_all_devices, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_manager_get_all_devices, -1, cb) ? 
1 : 0;
 }
 
 /* Manager.DeviceExists(string udi) */
 
 static void 
-cb_manager_device_exists(void *data, DBusMessage *msg)
+cb_manager_device_exists(void *data, DBusMessage *msg, DBusError *err)
 {
   E_Hal_Callback *cb = data;
   E_Hal_Manager_Device_Exists_Return *ret;
-  DBusError err;
   dbus_bool_t val;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
 
   ret = calloc(1, sizeof(E_Hal_Manager_Device_Exists_Return));
   if (!ret) return;
 
-  dbus_error_init(&err);
-  dbus_message_get_args(msg, &err, DBUS_TYPE_BOOLEAN, &val, DBUS_TYPE_INVALID);
+  dbus_message_get_args(msg, err, DBUS_TYPE_BOOLEAN, &val, DBUS_TYPE_INVALID);
 
-  if (dbus_error_is_set(&err))
+  if (dbus_error_is_set(err))
   {
-    /* XXX do something with an error */
-    printf("ERROR: %s,  %s!\n", err.name, err.message);
-    dbus_error_free(&err);
+    if (cb->func)
+      cb->func(cb->user_data, NULL, err);
+    dbus_error_free(err);
     goto error;
   }
 
   ret->boolean = val;
-  cb->func(cb->user_data, ret);
+  cb->func(cb->user_data, ret, err);
 
 error:
   free(ret);
@@ -101,19 +106,20 @@
   cb = e_hal_callback_new(cb_func, data);
   msg = e_hal_manager_call_new("DeviceExists");
   dbus_message_append_args(msg, DBUS_TYPE_STRING, &udi, DBUS_TYPE_INVALID);
-  return e_dbus_message_send(conn, msg, cb_manager_device_exists, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_manager_device_exists, -1, cb) ? 1 
: 0;
 }
 
 /* Manager.FindDeviceStringMatch */
 
 static void 
-cb_manager_find_device_string_match(void *data, DBusMessage *msg)
+cb_manager_find_device_string_match(void *data, DBusMessage *msg, DBusError 
*err)
 {
   E_Hal_Callback *cb = data;
   E_Hal_Manager_Find_Device_String_Match_Return *ret;
   DBusMessageIter iter, sub;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
 
   ret = calloc(1, sizeof(E_Hal_Manager_Find_Device_String_Match_Return));
   if (!ret) return;
@@ -135,7 +141,7 @@
     dbus_message_iter_next(&sub);
   }
 
-  cb->func(cb->user_data, ret);
+  cb->func(cb->user_data, ret, err);
 
 error:
   if (ret->strings) ecore_list_destroy(ret->strings);
@@ -152,19 +158,20 @@
   cb = e_hal_callback_new(cb_func, data);
   msg = e_hal_manager_call_new("FindDeviceStringMatch");
   dbus_message_append_args(msg, DBUS_TYPE_STRING, &key, DBUS_TYPE_STRING, 
&value, DBUS_TYPE_INVALID);
-  return e_dbus_message_send(conn, msg, cb_manager_find_device_string_match, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_manager_find_device_string_match, 
-1, cb) ? 1 : 0;
 }
 
 /* Manager.FindDeviceByCapability */
 
 static void 
-cb_manager_find_device_by_capability(void *data, DBusMessage *msg)
+cb_manager_find_device_by_capability(void *data, DBusMessage *msg, DBusError 
*err)
 {
   E_Hal_Callback *cb = data;
   E_Hal_Manager_Find_Device_By_Capability_Return *ret;
   DBusMessageIter iter, sub;
 
   if (!cb) return;
+  E_HAL_HANDLE_ERROR(cb, err);
 
   ret = calloc(1, sizeof(E_Hal_Manager_Find_Device_By_Capability_Return));
   if (!ret) return;
@@ -186,7 +193,7 @@
     dbus_message_iter_next(&sub);
   }
 
-  cb->func(cb->user_data, ret);
+  cb->func(cb->user_data, ret, err);
 
 error:
   if (ret->strings) ecore_list_destroy(ret->strings);
@@ -203,5 +210,5 @@
   cb = e_hal_callback_new(cb_func, data);
   msg = e_hal_manager_call_new("FindDeviceByCapability");
   dbus_message_append_args(msg, DBUS_TYPE_STRING, &capability, 
DBUS_TYPE_INVALID);
-  return e_dbus_message_send(conn, msg, cb_manager_find_device_by_capability, 
cb_error_generic, -1, cb) ? 1 : 0;
+  return e_dbus_message_send(conn, msg, cb_manager_find_device_by_capability, 
-1, cb) ? 1 : 0;
 }



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to