[commits] [Wiki] changed: ActiveSync/Development
Michael Rubinsky
mrubinsk at horde.org
Wed Nov 23 17:22:49 UTC 2016
mrubinsk Wed, 23 Nov 2016 17:22:49 +0000
Modified page: https://wiki.horde.org/ActiveSync/Development
New Revision: 7
Change log: Start filling out the class descriptions.
@@ -11,9 +11,22 @@
+++ Horde_ActiveSync
This library contains the main logic for decoding WBXML from EAS
requests, passing the request to the appropriate controller and then
sending properly encoded responses back to the client.
-++++ TODO general description of the classes
+The following is a general overview of the important classes in this
library and what they are responsible for:
+
+: Horde_ActiveSync : This is the main "server" and the entry point
for the library. Also contains some getters for various objects used
throughout.
+
+: Horde_ActiveSync_Collections : This class is essentially a manager
for "collections". A collection is what we call a group of properties
related to a single synchable data store (such as an email folder, or
a contact list). It is the entry point for the SYNC and PING handlers
for asking for changes. It manages the SyncCache, is responsible for
ensuring we have all needed information when handling empty SYNC
requests, detects concurrent requests, and a bunch more.
+
+: Horde_ActiveSync_Device : Manages device information such as OS and
version. Also contains code that works around certain quirks that are
specific to certain clients.
+
+: Horde_ActiveSync_Mime : A wrapper around Horde_Mime_Part that adds
to and overrides existing behavior to make it more specific to
ActiveSync. There is also Horde_ActiveSync_Mime_Iterator that is
changed from the the normal Horde_Mime_Iterator behavior in that we
don't include what EAS considers attachments to be returned, and we
also include the base part when iterating (whereas Horde_Mime does
not). Objects are instantiated from Horde_ActiveSync_Imap_* classes.
+
+: Horde_ActiveSync_Rfc822 : Deals with handling RFC822 email message
strings/streams in the context of EAS. E.g., used when handling
incoming SENDMAIL commands.
+
+: Horde_ActiveSync_SyncCache : This class is responsible for
storing/loading the SyncCache data from the storage/state driver. The
SyncCache started life as a way of caching data from SYNC and PING
requests that would be needed if the client issued an "empty"
SYNC/PING request. Empty requests are required to use the same values
as the last non-empty request. It has since grown to be essentially a
shared data store that helps keep collection data up to date between
any and all running requests. Most (if not all) interaction with this
class is through the Horde_ActiveSync_Collections object.
+
+++ Horde_Core
Core contains any code specific to handling Horde Groupware
collections. This is where requests for information and changes to
information are actually handled.
More information about the commits
mailing list