From: <svn...@op...> - 2009-09-30 11:12:00
|
Author: bellmich Date: Wed Sep 30 13:11:44 2009 New Revision: 1291 URL: http://libsyncml.opensync.org/changeset/1291 Log: added code to set the new option MAX_MSG_CHANGES This code only stores the option and does nothing else. Modified: trunk/libsyncml/data_sync_api/data_sync_client.c trunk/libsyncml/data_sync_api/data_sync_server.c trunk/libsyncml/data_sync_api/sml_data_sync.c trunk/libsyncml/data_sync_api/sml_data_sync_defines.h trunk/libsyncml/data_sync_api/sml_data_sync_private.h trunk/libsyncml/sml_manager.c trunk/libsyncml/sml_manager.h trunk/libsyncml/sml_manager_internals.h trunk/libsyncml/sml_session.c trunk/libsyncml/sml_session.h trunk/libsyncml/sml_session_internals.h Modified: trunk/libsyncml/data_sync_api/data_sync_client.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_client.c Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/data_sync_api/data_sync_client.c Wed Sep 30 13:11:44 2009 (r1291) @@ -353,6 +353,7 @@ smlManagerSetEventCallback(self->priv->manager, sml_data_sync_event_callback, self); smlManagerSetLocalMaxMsgSize(self->priv->manager, self->priv->max_msg_size); smlManagerSetLocalMaxObjSize(self->priv->manager, self->priv->max_obj_size); + smlManagerSetLocalMaxMsgChanges(self->priv->manager, self->priv->max_msg_changes); /* set server specific callbacks */ self->priv->alert_callback = sml_data_sync_data_store_session_client_alert_callback; Modified: trunk/libsyncml/data_sync_api/data_sync_server.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_server.c Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/data_sync_api/data_sync_server.c Wed Sep 30 13:11:44 2009 (r1291) @@ -232,6 +232,7 @@ smlManagerSetEventCallback(self->priv->manager, sml_data_sync_event_callback, self); smlManagerSetLocalMaxMsgSize(self->priv->manager, self->priv->max_msg_size); smlManagerSetLocalMaxObjSize(self->priv->manager, self->priv->max_obj_size); + smlManagerSetLocalMaxMsgChanges(self->priv->manager, self->priv->max_msg_changes); /* set server specific callbacks */ self->priv->alert_callback = sml_data_sync_data_store_session_server_alert_callback; Modified: trunk/libsyncml/data_sync_api/sml_data_sync.c ============================================================================== --- trunk/libsyncml/data_sync_api/sml_data_sync.c Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/data_sync_api/sml_data_sync.c Wed Sep 30 13:11:44 2009 (r1291) @@ -250,6 +250,7 @@ self->priv->use_timestamp_anchor = TRUE; self->priv->max_obj_size = SML_DEFAULT_MAX_OBJ_SIZE; self->priv->max_msg_size = SML_DEFAULT_MAX_MSG_SIZE; + self->priv->max_msg_changes = SML_DEFAULT_MAX_MSG_CHANGES; self->priv->sessions = g_hash_table_new_full(g_direct_hash, g_direct_equal, sml_data_sync_free_session, @@ -493,6 +494,8 @@ self->priv->max_obj_size = atoi(value); } else if (!strcmp(SML_DATA_SYNC_CONFIG_MAX_MSG_SIZE, name)) { self->priv->max_msg_size = atoi(value); + } else if (!strcmp(SML_DATA_SYNC_CONFIG_MAX_MSG_CHANGES, name)) { + self->priv->max_msg_changes = atoi(value); } else if (!strcmp(SML_DATA_SYNC_CONFIG_FAKE_DEVICE, name)) { self->priv->fake_device = g_strdup(value); } else if (!strcmp(SML_DATA_SYNC_CONFIG_FAKE_MANUFACTURER, name)) { Modified: trunk/libsyncml/data_sync_api/sml_data_sync_defines.h ============================================================================== --- trunk/libsyncml/data_sync_api/sml_data_sync_defines.h Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/data_sync_api/sml_data_sync_defines.h Wed Sep 30 13:11:44 2009 (r1291) @@ -56,6 +56,7 @@ #define SML_DEFAULT_MAX_MSG_SIZE 65535 #define SML_DEFAULT_MAX_OBJ_SIZE 1024000 +#define SML_DEFAULT_MAX_MSG_CHANGES 0 /* disabled limit */ /* Data Synchronization config API defines */ @@ -85,6 +86,7 @@ #define SML_DATA_SYNC_CONFIG_ONLY_REPLACE "ONLY_REPLACE" #define SML_DATA_SYNC_CONFIG_MAX_MSG_SIZE "MAX_MSG_SIZE" #define SML_DATA_SYNC_CONFIG_MAX_OBJ_SIZE "MAX_OBJ_SIZE" +#define SML_DATA_SYNC_CONFIG_MAX_MSG_CHANGES "MAX_MSG_CHANGES" #define SML_DATA_SYNC_CONFIG_FAKE_DEVICE "FAKE_DEVICE" #define SML_DATA_SYNC_CONFIG_FAKE_MANUFACTURER "FAKE_MANUFACTURER" Modified: trunk/libsyncml/data_sync_api/sml_data_sync_private.h ============================================================================== --- trunk/libsyncml/data_sync_api/sml_data_sync_private.h Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/data_sync_api/sml_data_sync_private.h Wed Sep 30 13:11:44 2009 (r1291) @@ -46,6 +46,7 @@ gboolean use_wbxml; gsize max_obj_size; gsize max_msg_size; + gsize max_msg_changes; SmlProtocolVersion version; SmlDataSyncInternalStateType state; Modified: trunk/libsyncml/sml_manager.c ============================================================================== --- trunk/libsyncml/sml_manager.c Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/sml_manager.c Wed Sep 30 13:11:44 2009 (r1291) @@ -876,6 +876,14 @@ else smlSessionUseLargeObjects(session, FALSE); + /* configure maximum number of changes in one message + * + * This is necessary if the user of the library implement + * own caching strategies which can block (e.g. OpenSync). + */ + if (manager->localMaxMsgChanges) + smlSessionSetLocalMaxMsgChanges(session, manager->localMaxMsgChanges); + smlSessionSetEventCallback(session, _event_callback, manager); smlSessionSetDataCallback(session, _data_send_callback, sess); @@ -1440,6 +1448,14 @@ manager->localMaxObjSize = size; } +void +smlManagerSetLocalMaxMsgChanges (SmlManager *manager, + gsize size) +{ + smlAssert(manager); + manager->localMaxMsgChanges = size; +} + gsize smlManagerGetNewSessionID (SmlManager *manager) { Modified: trunk/libsyncml/sml_manager.h ============================================================================== --- trunk/libsyncml/sml_manager.h Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/sml_manager.h Wed Sep 30 13:11:44 2009 (r1291) @@ -82,8 +82,9 @@ void smlManagerDispatch (SmlManager *manager); gboolean smlManagerCheck (SmlManager *manager); -void smlManagerSetLocalMaxMsgSize (SmlManager *manager, gsize size); -void smlManagerSetLocalMaxObjSize (SmlManager *manager, gsize size); +void smlManagerSetLocalMaxMsgSize (SmlManager *manager, gsize size); +void smlManagerSetLocalMaxObjSize (SmlManager *manager, gsize size); +void smlManagerSetLocalMaxMsgChanges (SmlManager *manager, gsize size); gsize smlManagerGetNewSessionID (SmlManager *manager); Modified: trunk/libsyncml/sml_manager_internals.h ============================================================================== --- trunk/libsyncml/sml_manager_internals.h Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/sml_manager_internals.h Wed Sep 30 13:11:44 2009 (r1291) @@ -60,6 +60,7 @@ gsize localMaxMsgSize; gsize localMaxObjSize; + gsize localMaxMsgChanges; }; typedef struct SmlManagerEvent { Modified: trunk/libsyncml/sml_session.c ============================================================================== --- trunk/libsyncml/sml_session.c Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/sml_session.c Wed Sep 30 13:11:44 2009 (r1291) @@ -2501,6 +2501,19 @@ return result; } +void +smlSessionSetLocalMaxMsgChanges (SmlSession *session, + gsize size) +{ + smlTrace(TRACE_ENTRY, "%s(%p, %u)", __func__, session, size); + smlAssert(session); + + session->localMaxMsgChanges = size; + + smlTrace(TRACE_EXIT, "%s - %u", __func__, session->localMaxMsgChanges); +} + + /** Sets the obj size that will get transmitted to the remote side in the * <MaxObjSize> tag. So this sets the maximum size of the object we want to receive. * If an item is larger, we return an error Modified: trunk/libsyncml/sml_session.h ============================================================================== --- trunk/libsyncml/sml_session.h Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/sml_session.h Wed Sep 30 13:11:44 2009 (r1291) @@ -64,10 +64,11 @@ void smlSessionSetEstablished (SmlSession *session, gboolean estabished); gboolean smlSessionGetEstablished (SmlSession *session); -void smlSessionSetRemoteMaxMsgSize (SmlSession *session, gsize size); -void smlSessionSetLocalMaxMsgSize (SmlSession *session, gsize size); -gsize smlSessionGetRemoteMaxMsgSize (SmlSession *session); -gsize smlSessionGetLocalMaxMsgSize (SmlSession *session); +void smlSessionSetRemoteMaxMsgSize (SmlSession *session, gsize size); +void smlSessionSetLocalMaxMsgSize (SmlSession *session, gsize size); +gsize smlSessionGetRemoteMaxMsgSize (SmlSession *session); +gsize smlSessionGetLocalMaxMsgSize (SmlSession *session); +void smlSessionSetLocalMaxMsgChanges (SmlSession *session, gsize size); void smlSessionSetLocalMaxObjSize (SmlSession *session, gsize limit); void smlSessionSetRemoteMaxObjSize (SmlSession *session, gsize limit); Modified: trunk/libsyncml/sml_session_internals.h ============================================================================== --- trunk/libsyncml/sml_session_internals.h Mon Sep 28 17:21:15 2009 (r1290) +++ trunk/libsyncml/sml_session_internals.h Wed Sep 30 13:11:44 2009 (r1291) @@ -56,6 +56,7 @@ */ gsize localMaxMsgSize; gsize localMaxObjSize; + gsize localMaxMsgChanges; GList *pendingReplies; |