Changeset 244

Show
Ignore:
Timestamp:
06/28/07 11:02:10 (1 year ago)
Author:
prahal
Message:

Added event callback (dgollub) to manage changeset for getChanges event.
Beware that there can be multiple dsession per changeset thus check the session
is final before relying on this callback.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Doxyfile.in

    r50 r244  
    100100# the base classes will not be shown. 
    101101 
    102 INLINE_INHERITED_MEMB = NO 
     102INLINE_INHERITED_MEMB = YES  
    103103 
    104104# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full  
     
    10341034# have no effect if this option is set to NO (the default) 
    10351035 
    1036 HAVE_DOT = NO 
     1036HAVE_DOT = YES  
    10371037 
    10381038# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen  
     
    10541054# Language. 
    10551055 
    1056 UML_LOOK = NO 
     1056UML_LOOK = YES 
    10571057 
    10581058# If set to YES, the inheritance and collaboration graphs will show the  
     
    10811081# functions only using the \callgraph command. 
    10821082 
    1083 CALL_GRAPH = NO 
     1083CALL_GRAPH = YES 
    10841084 
    10851085# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen  
  • trunk/libsyncml/objects/sml_ds_server.c

    r240 r244  
    512512                dsession->syncReply = SML_NO_ERROR; 
    513513                 
     514                // Now there are no more changes... do some fancy callback. Some applications will love it ;) 
     515                if (!dsession->recvChanges && dsession->recvEventCallback) { 
     516                        dsession->recvEventCallback(dsession, SML_DS_EVENT_GOTCHANGES, dsession->recvEventCallbackUserdata); 
     517                        smlTrace(TRACE_INTERNAL, "recvEventCallback no changes in recvSync callback"); 
     518                } 
     519 
    514520                smlTrace(TRACE_EXIT, "%s", __func__); 
    515521        } else if (dsession->recvChanges && dsession->changesCallback) { 
     
    517523                 
    518524                while (dsession->recvChanges) { 
     525 
    519526                        SmlCommand *cmd = dsession->recvChanges->data; 
    520527                         
     
    529536                                 * uid (if we are a client for example). If it is not given we use the 
    530537                                 * source uri. This has then to be translated by the sync engine of course */ 
    531                                  
     538 
    532539                                char *data = NULL; 
    533540                                unsigned int size = 0; 
     
    557564                        dsession->recvChanges = g_list_delete_link(dsession->recvChanges, dsession->recvChanges); 
    558565                } 
    559                  
     566 
     567                // Now there are no more changes... do some fancy callback. Some applications will love it ;) 
     568                if (dsession->recvEventCallback) { 
     569                        dsession->recvEventCallback(dsession, SML_DS_EVENT_GOTCHANGES, dsession->recvEventCallbackUserdata); 
     570                        smlTrace(TRACE_INTERNAL, "recvEventCallback all changes sent in recvChanges callback"); 
     571                } 
     572 
    560573                smlTrace(TRACE_EXIT, "%s", __func__); 
     574        } else { 
     575                smlTrace(TRACE_ENTRY, "%s()", __func__); 
     576                 
     577                smlTrace(TRACE_INTERNAL, "recvChanges: %p changesCallback: %p", dsession->recvChanges, dsession->changesCallback);  
     578 
     579                smlTrace(TRACE_EXIT, "%s()", __func__); 
     580 
    561581        } 
    562582 
     
    832852} 
    833853 
     854void smlDsSessionGetEvent(SmlDsSession *dsession, SmlDsSessionEventCb eventCallback, void *userdata) 
     855{ 
     856        smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, dsession, eventCallback, userdata); 
     857        smlAssert(dsession); 
     858        smlAssert(eventCallback); 
     859         
     860        dsession->recvEventCallback = eventCallback; 
     861        dsession->recvEventCallbackUserdata = userdata; 
     862         
     863        //smlDsSessionDispatch(dsession); 
     864         
     865        smlTrace(TRACE_EXIT, "%s", __func__); 
     866} 
     867 
     868 
    834869/** @brief Start the sync command to send to the other side 
    835870 *  
  • trunk/libsyncml/objects/sml_ds_server.h

    r240 r244  
    3131} SmlDsServerType; 
    3232 
     33typedef enum { 
     34        SML_DS_EVENT_GOTCHANGES = 0, 
     35        SML_DS_EVENT_COMMITEDCHANGES = 1 
     36} SmlDsEvent; 
     37 
    3338typedef SmlErrorType (* SmlDsServerSanCb) (SmlDsServer *dsserver, SmlAlertType type, void *userdata); 
    3439 
     
    3641typedef SmlBool (* SmlDsSessionAlertCb) (SmlDsSession *dsession, SmlAlertType type, const char *last, const char *next, void *userdata); 
    3742typedef void (* SmlDsSessionSyncCb) (SmlDsSession *dsession, unsigned int numchanges, void *userdata); 
     43typedef void (* SmlDsSessionEventCb) (SmlDsSession *dsession, SmlDsEvent event, void *userdata); 
    3844typedef SmlBool (* SmlDsSessionChangesCb) (SmlDsSession *dsession, SmlChangeType type, const char *uid, char *data, unsigned int size, const char *contenttype, void *userdata, SmlError **error); 
    3945typedef void (* SmlDsSessionWriteCb) (SmlDsSession *dsession, SmlStatus *status, const char *newuid, void *userdata); 
     
    5965void smlDsSessionGetChanges(SmlDsSession *dsession, SmlDsSessionChangesCb chgCallback, void *userdata); 
    6066void smlDsSessionGetSync(SmlDsSession *dsession, SmlDsSessionSyncCb chgCallback, void *userdata); 
     67void smlDsSessionGetEvent(SmlDsSession *dsession, SmlDsSessionEventCb eventCallback, void *userdata); 
    6168SmlBool smlDsSessionSendSync(SmlDsSession *dsession, unsigned int num_changes, SmlStatusReplyCb callback, void *userdata, SmlError **error); 
    6269SmlBool smlDsSessionQueueChange(SmlDsSession *dsession, SmlChangeType type, const char *uid, const char *data, unsigned int size, const char *contenttype, SmlDsSessionWriteCb callback, void *userdata, SmlError **error); 
  • trunk/libsyncml/objects/sml_ds_server_internals.h

    r197 r244  
    6767        void *sentSyncCallbackUserdata; 
    6868         
     69        /** Callback that will infomration about the Ds Session events */ 
     70        SmlDsSessionEventCb recvEventCallback; 
     71        void *recvEventCallbackUserdata; 
     72 
    6973        /** The temporary storage for the sync command to send */ 
    7074        SmlCommand *syncCommand;