[evolution-patches] locking on calendar backends patch
- From: Rodrigo Moya <rodrigo novell com>
- To: Evolution Patches <evolution-patches lists ximian com>
- Subject: [evolution-patches] locking on calendar backends patch
- Date: Fri, 18 Feb 2005 12:42:08 +0100
After running a few days with JP's patch with no problems, I think this
is ok to commit. This includes, apart from JP patch, the needed calls in
the other backends to make all them lock operations.
--
Rodrigo Moya <rodrigo novell com>
? .ChangeLogcvsdiff.swp
? config.guess
? config.sub
? depcomp
? install-sh
? ltmain.sh
? missing
? mkinstalldirs
? ylwrap
? tests/ecal/test-recur
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.422
diff -u -p -r1.422 ChangeLog
--- ChangeLog 17 Feb 2005 10:15:17 -0000 1.422
+++ ChangeLog 18 Feb 2005 11:40:45 -0000
@@ -1,3 +1,35 @@
+2005-02-18 Rodrigo Moya <rodrigo novell com>
+
+ * backends/http/e-cal-backend-http.c (e_cal_backend_http_init):
+ * backends/groupwise/e-cal-backend-groupwise.c
+ (e_cal_backend_groupwise_init):
+ * backends/weather/e-cal-backend-weather.c
+ (e_cal_backend_weather_init): set backend's lock to TRUE.
+
+2005-02-18 JP Rosevear <jpr novell com>
+
+ * libedata-cal/e-cal-backend-sync.c: added a lock wrapper to make
+ calls be locked if backend is set so.
+ (e_cal_backend_sync_set_lock): new function.
+ (e_cal_backend_sync_is_read_only, e_cal_backend_sync_get_cal_address,
+ e_cal_backend_sync_get_alarm_email_address,
+ e_cal_backend_sync_get_ldap_attribute,
+ e_cal_backend_sync_get_static_capabilities, e_cal_backend_sync_open,
+ e_cal_backend_sync_remove, e_cal_backend_sync_create_object,
+ e_cal_backend_sync_modify_object, e_cal_backend_sync_remove_object,
+ e_cal_backend_sync_discard_alarm, e_cal_backend_sync_receive_objects,
+ e_cal_backend_sync_send_objects, e_cal_backend_sync_get_default_object,
+ e_cal_backend_sync_get_object, e_cal_backend_sync_get_object_list,
+ e_cal_backend_sync_get_timezone, e_cal_backend_sync_add_timezone,
+ e_cal_backend_sync_set_default_timezone, e_cal_backend_sync_get_changes,
+ e_cal_backend_sync_get_free_busy): wrap calls to backend methods in
+ our lock wrapper.
+
+ * backends/contacts/e-cal-backend-contacts.c
+ (e_cal_backend_contacts_init):
+ * backends/file/e-cal-backend-file.c (e_cal_backend_file_init):
+ set backend's lock to TRUE.
+
2005-02-17 Chenthill Palanisamy <pchenthill novell com>
* backends/groupwise/e-cal-backend-groupwise.c:
Index: backends/contacts/e-cal-backend-contacts.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/contacts/e-cal-backend-contacts.c,v
retrieving revision 1.16
diff -u -p -r1.16 e-cal-backend-contacts.c
--- backends/contacts/e-cal-backend-contacts.c 2 Feb 2005 18:44:30 -0000 1.16
+++ backends/contacts/e-cal-backend-contacts.c 18 Feb 2005 11:40:45 -0000
@@ -933,6 +933,8 @@ e_cal_backend_contacts_init (ECalBackend
priv->default_zone = icaltimezone_get_utc_timezone ();
cbc->priv = priv;
+
+ e_cal_backend_sync_set_lock (E_CAL_BACKEND_SYNC (cbc), TRUE);
}
/* Class initialization function for the contacts backend */
Index: backends/file/e-cal-backend-file.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/file/e-cal-backend-file.c,v
retrieving revision 1.52
diff -u -p -r1.52 e-cal-backend-file.c
--- backends/file/e-cal-backend-file.c 8 Feb 2005 11:29:43 -0000 1.52
+++ backends/file/e-cal-backend-file.c 18 Feb 2005 11:40:45 -0000
@@ -2430,7 +2430,7 @@ e_cal_backend_file_send_objects (ECalBac
/* Object initialization function for the file backend */
static void
-e_cal_backend_file_init (ECalBackendFile *cbfile, ECalBackendFileClass *class)
+e_cal_backend_file_init (ECalBackendFile *cbfile)
{
ECalBackendFilePrivate *priv;
@@ -2449,6 +2449,8 @@ e_cal_backend_file_init (ECalBackendFile
/* The timezone defaults to UTC. */
priv->default_zone = icaltimezone_get_utc_timezone ();
+
+ e_cal_backend_sync_set_lock (E_CAL_BACKEND_SYNC (cbfile), TRUE);
}
/* Class initialization function for the file backend */
Index: backends/groupwise/e-cal-backend-groupwise.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
retrieving revision 1.128
diff -u -p -r1.128 e-cal-backend-groupwise.c
--- backends/groupwise/e-cal-backend-groupwise.c 17 Feb 2005 10:15:18 -0000 1.128
+++ backends/groupwise/e-cal-backend-groupwise.c 18 Feb 2005 11:40:46 -0000
@@ -1966,6 +1966,8 @@ e_cal_backend_groupwise_init (ECalBacken
priv->mutex = g_mutex_new ();
cbgw->priv = priv;
+
+ e_cal_backend_sync_set_lock (E_CAL_BACKEND_SYNC (cbgw), TRUE);
}
/* Class initialization function for the gw backend */
Index: backends/http/e-cal-backend-http.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/http/e-cal-backend-http.c,v
retrieving revision 1.29
diff -u -p -r1.29 e-cal-backend-http.c
--- backends/http/e-cal-backend-http.c 2 Feb 2005 18:44:31 -0000 1.29
+++ backends/http/e-cal-backend-http.c 18 Feb 2005 11:40:46 -0000
@@ -960,6 +960,8 @@ e_cal_backend_http_init (ECalBackendHttp
priv->uri = NULL;
priv->reload_timeout_id = 0;
priv->opened = FALSE;
+
+ e_cal_backend_sync_set_lock (E_CAL_BACKEND_SYNC (cbhttp), TRUE);
}
/* Class initialization function for the file backend */
Index: backends/weather/e-cal-backend-weather.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/weather/e-cal-backend-weather.c,v
retrieving revision 1.6
diff -u -p -r1.6 e-cal-backend-weather.c
--- backends/weather/e-cal-backend-weather.c 7 Feb 2005 22:00:26 -0000 1.6
+++ backends/weather/e-cal-backend-weather.c 18 Feb 2005 11:40:46 -0000
@@ -829,6 +829,8 @@ e_cal_backend_weather_init (ECalBackendW
priv->city = NULL;
priv->zones = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_zone);
+
+ e_cal_backend_sync_set_lock (E_CAL_BACKEND_SYNC (cbw), TRUE);
}
/* Class initialization function for the weather backend */
Index: libedata-cal/e-cal-backend-sync.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/libedata-cal/e-cal-backend-sync.c,v
retrieving revision 1.12
diff -u -p -r1.12 e-cal-backend-sync.c
--- libedata-cal/e-cal-backend-sync.c 20 Dec 2004 15:33:24 -0000 1.12
+++ libedata-cal/e-cal-backend-sync.c 18 Feb 2005 11:40:46 -0000
@@ -13,83 +13,104 @@
#include "e-cal-backend-sync.h"
struct _ECalBackendSyncPrivate {
- int mumble;
GMutex *sync_mutex;
+
+ gboolean mutex_lock;
};
+#define LOCK_WRAPPER(func, args) \
+ g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->func); \
+ if (backend->priv->mutex_lock) \
+ g_mutex_lock (backend->priv->sync_mutex); \
+ status = (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->func) args; \
+ if (backend->priv->mutex_lock) \
+ g_mutex_unlock (backend->priv->sync_mutex); \
+ return status;
+
static GObjectClass *parent_class;
+void
+e_cal_backend_sync_set_lock (ECalBackendSync *backend, gboolean lock)
+{
+ g_return_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend));
+
+ backend->priv->mutex_lock = lock;
+}
+
ECalBackendSyncStatus
e_cal_backend_sync_is_read_only (ECalBackendSync *backend, EDataCal *cal, gboolean *read_only)
{
+ ECalBackendSyncStatus status;
+
g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
g_return_val_if_fail (read_only, GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->is_read_only_sync);
+ LOCK_WRAPPER (is_read_only_sync, (backend, cal, read_only));
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->is_read_only_sync) (backend, cal, read_only);
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_cal_address (ECalBackendSync *backend, EDataCal *cal, char **address)
{
+ ECalBackendSyncStatus status;
+
g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
g_return_val_if_fail (address, GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_cal_address_sync);
+ LOCK_WRAPPER (get_cal_address_sync, (backend, cal, address));
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_cal_address_sync) (backend, cal, address);
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_alarm_email_address (ECalBackendSync *backend, EDataCal *cal, char **address)
{
+ ECalBackendSyncStatus status;
+
g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
g_return_val_if_fail (address, GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_alarm_email_address_sync);
+ LOCK_WRAPPER (get_alarm_email_address_sync, (backend, cal, address));
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_alarm_email_address_sync) (backend, cal, address);
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_ldap_attribute (ECalBackendSync *backend, EDataCal *cal, char **attribute)
{
+ ECalBackendSyncStatus status;
+
g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
g_return_val_if_fail (attribute, GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_ldap_attribute_sync);
+ LOCK_WRAPPER (get_ldap_attribute_sync, (backend, cal, attribute));
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_ldap_attribute_sync) (backend, cal, attribute);
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_static_capabilities (ECalBackendSync *backend, EDataCal *cal, char **capabilities)
{
+ ECalBackendSyncStatus status;
+
g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
g_return_val_if_fail (capabilities, GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_static_capabilities_sync);
+ LOCK_WRAPPER (get_static_capabilities_sync, (backend, cal, capabilities));
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_static_capabilities_sync) (backend, cal, capabilities);
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_open (ECalBackendSync *backend, EDataCal *cal, gboolean only_if_exists,
const char *username, const char *password)
{
- ECalBackendSyncPrivate *priv;
ECalBackendSyncStatus status;
g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->open_sync);
- priv = backend->priv;
-
- g_mutex_lock (priv->sync_mutex);
- status = (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->open_sync) (backend, cal, only_if_exists, username, password);
-
- g_mutex_unlock (priv->sync_mutex);
+ LOCK_WRAPPER (open_sync, (backend, cal, only_if_exists, username, password));
return status;
}
@@ -97,139 +118,175 @@ e_cal_backend_sync_open (ECalBackendSyn
ECalBackendSyncStatus
e_cal_backend_sync_remove (ECalBackendSync *backend, EDataCal *cal)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
-
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->remove_sync);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->remove_sync) (backend, cal);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+
+ LOCK_WRAPPER (remove_sync, (backend, cal));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_create_object (ECalBackendSync *backend, EDataCal *cal, char **calobj, char **uid)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->create_object_sync != NULL,
- GNOME_Evolution_Calendar_UnsupportedMethod);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->create_object_sync) (backend, cal, calobj, uid);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->create_object_sync != NULL,
+ GNOME_Evolution_Calendar_UnsupportedMethod);
+
+ LOCK_WRAPPER (create_object_sync, (backend, cal, calobj, uid));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_modify_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj,
CalObjModType mod, char **old_object, char **new_object)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->modify_object_sync != NULL,
- GNOME_Evolution_Calendar_UnsupportedMethod);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->modify_object_sync) (backend, cal,
- calobj, mod, old_object, new_object);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->modify_object_sync != NULL,
+ GNOME_Evolution_Calendar_UnsupportedMethod);
+
+ LOCK_WRAPPER (modify_object_sync, (backend, cal, calobj, mod, old_object, new_object));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_remove_object (ECalBackendSync *backend, EDataCal *cal, const char *uid, const char *rid,
CalObjModType mod, char **old_object, char **object)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->remove_object_sync != NULL,
- GNOME_Evolution_Calendar_UnsupportedMethod);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->remove_object_sync) (backend, cal, uid, rid, mod,
- old_object, object);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->remove_object_sync != NULL,
+ GNOME_Evolution_Calendar_UnsupportedMethod);
+
+ LOCK_WRAPPER (remove_object_sync, (backend, cal, uid, rid, mod, old_object, object));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_discard_alarm (ECalBackendSync *backend, EDataCal *cal, const char *uid, const char *auid)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->discard_alarm_sync != NULL,
- GNOME_Evolution_Calendar_UnsupportedMethod);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->discard_alarm_sync) (backend, cal, uid, auid);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->discard_alarm_sync != NULL,
+ GNOME_Evolution_Calendar_UnsupportedMethod);
+
+ LOCK_WRAPPER (discard_alarm_sync, (backend, cal, uid, auid));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_receive_objects (ECalBackendSync *backend, EDataCal *cal, const char *calobj)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->receive_objects_sync != NULL,
- GNOME_Evolution_Calendar_UnsupportedMethod);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->receive_objects_sync) (backend, cal, calobj);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->receive_objects_sync != NULL,
+ GNOME_Evolution_Calendar_UnsupportedMethod);
+
+ LOCK_WRAPPER (receive_objects_sync, (backend, cal, calobj));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_send_objects (ECalBackendSync *backend, EDataCal *cal, const char *calobj, GList **users,
char **modified_calobj)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->send_objects_sync != NULL,
- GNOME_Evolution_Calendar_UnsupportedMethod);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->send_objects_sync) (backend, cal, calobj, users, modified_calobj);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->send_objects_sync != NULL,
+ GNOME_Evolution_Calendar_UnsupportedMethod);
+
+ LOCK_WRAPPER (send_objects_sync, (backend, cal, calobj, users, modified_calobj));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_default_object (ECalBackendSync *backend, EDataCal *cal, char **object)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (object, GNOME_Evolution_Calendar_OtherError);
-
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_default_object_sync);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_default_object_sync) (backend, cal, object);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (object, GNOME_Evolution_Calendar_OtherError);
+
+ LOCK_WRAPPER (get_default_object_sync, (backend, cal, object));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_object (ECalBackendSync *backend, EDataCal *cal, const char *uid, const char *rid, char **object)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (object, GNOME_Evolution_Calendar_OtherError);
-
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_object_sync);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_object_sync) (backend, cal, uid, rid, object);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (object, GNOME_Evolution_Calendar_OtherError);
+
+ LOCK_WRAPPER (get_object_sync, (backend, cal, uid, rid, object));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_object_list (ECalBackendSync *backend, EDataCal *cal, const char *sexp, GList **objects)
{
- g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_return_val_if_fail (objects, GNOME_Evolution_Calendar_OtherError);
-
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_object_list_sync);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_object_list_sync) (backend, cal, sexp, objects);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (backend && E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+ g_return_val_if_fail (objects, GNOME_Evolution_Calendar_OtherError);
+
+ LOCK_WRAPPER (get_object_list_sync, (backend, cal, sexp, objects));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid, char **object)
{
- g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
-
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_timezone_sync != NULL);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_timezone_sync) (backend, cal, tzid, object);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+
+ LOCK_WRAPPER (get_timezone_sync, (backend, cal, tzid, object));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_add_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj)
{
- g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
-
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->add_timezone_sync != NULL);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->add_timezone_sync) (backend, cal, tzobj);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+
+ LOCK_WRAPPER (add_timezone_sync, (backend, cal, tzobj));
+
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_set_default_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzid)
{
- g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
-
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->set_default_timezone_sync != NULL);
-
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->set_default_timezone_sync) (backend, cal, tzid);
+ ECalBackendSyncStatus status;
+
+ g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
+
+ LOCK_WRAPPER (set_default_timezone_sync, (backend, cal, tzid));
+
+ return status;
}
@@ -237,24 +294,26 @@ ECalBackendSyncStatus
e_cal_backend_sync_get_changes (ECalBackendSync *backend, EDataCal *cal, const char *change_id,
GList **adds, GList **modifies, GList **deletes)
{
+ ECalBackendSyncStatus status;
+
g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_changes_sync != NULL);
+ LOCK_WRAPPER (get_changes_sync, (backend, cal, change_id, adds, modifies, deletes));
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_changes_sync) (backend, cal, change_id,
- adds, modifies, deletes);
+ return status;
}
ECalBackendSyncStatus
e_cal_backend_sync_get_free_busy (ECalBackendSync *backend, EDataCal *cal, GList *users,
time_t start, time_t end, GList **freebusy)
{
+ ECalBackendSyncStatus status;
+
g_return_val_if_fail (E_IS_CAL_BACKEND_SYNC (backend), GNOME_Evolution_Calendar_OtherError);
- g_assert (E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_freebusy_sync != NULL);
+ LOCK_WRAPPER (get_freebusy_sync, (backend, cal, users, start, end, freebusy));
- return (* E_CAL_BACKEND_SYNC_GET_CLASS (backend)->get_freebusy_sync) (backend, cal, users,
- start, end, freebusy);
+ return status;
}
Index: libedata-cal/e-cal-backend-sync.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/libedata-cal/e-cal-backend-sync.h,v
retrieving revision 1.9
diff -u -p -r1.9 e-cal-backend-sync.h
--- libedata-cal/e-cal-backend-sync.h 20 Dec 2004 15:33:24 -0000 1.9
+++ libedata-cal/e-cal-backend-sync.h 18 Feb 2005 11:40:46 -0000
@@ -74,6 +74,8 @@ struct _ECalBackendSyncClass {
typedef ECalBackendSync * (*ECalBackendSyncFactoryFn) (void);
GType e_cal_backend_sync_get_type (void);
+void e_cal_backend_sync_set_lock (ECalBackendSync *backend, gboolean lock);
+
ECalBackendSyncStatus e_cal_backend_sync_is_read_only (ECalBackendSync *backend,
EDataCal *cal,
gboolean *read_only);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]