[commits] [Wiki] changed: ActiveSync/Development

Michael Rubinsky mrubinsk at horde.org
Wed Nov 23 16:59:06 UTC 2016


mrubinsk  Wed, 23 Nov 2016 16:59:06 +0000

Modified page: https://wiki.horde.org/ActiveSync/Development
New Revision:  6
Change log:  Note about concurrent requests and sync cache.

@@ -86,8 +86,10 @@

  Now we can take care of the actual command the client is attempting  
to perform. These are handled by Horde_ActiveSync_Request_* objects.  
Again, the name of these objects are a bit outdated and are planned to  
be renamed in H6. The object is instantiated and the handle() request  
is called. If all goes well, a value of true is returned and control  
is returned back to the RPC layer to finish up.

  The Horde_ActiveSync_Request_* objects are responsible for enforcing  
the schema of whatever request is being handled, passing off any  
incoming additions/deletions/changes to the backend and delegating the  
responsibility for storing any data that needs to be persisted. This  
includes the collection state and the sync cache. This are explained  
in the section on the client life cycle.
+
+I should be noted here that ActiveSync clients are able to issue  
requests while other requests are still running. I.e., if the user  
changes an entry, a new SYNC request can be issued, even though there  
is currently a PING request running. After the SYNC request is  
handled, the client can then issue another PING reqeust etc... The  
sync cache is used to track this and detect these concurrent requests  
and kill off the most appropriate request.

  There are almost 2 dozen different types of requests that handle  
things from synchronizing the folder structure to validating S/MIME  
certificates. The more common request objects are:

  : Horde_ActiveSync_Request_Sync : This is the main code responsible  
for accepting and sending object changes, handling "hanging syncs"  
(which are SYNC requests that also act as PING requests) as well as  
handling certain options that the client sets (such as truncation,  
sync window etc...).



More information about the commits mailing list