2.2.4.2 Syntactical Structure
The syntactical structure of the FastTransfer adheres to the following guidelines:
Camel-cased names are nonterminal syntactic elements, as specified in [RFC5234] section 2.3.
Pascal-cased names without a PidTag prefix are markers. Markers are specified in section 2.2.4.1.4.
Pascal-cased names with a PidTag prefix are properties and are defined in [MS-OXPROPS].
Pascal-cased names with a MetaTag prefix are meta-properties. Meta-properties are specified in section 2.2.4.1.5.
Note that markers never have a value, and meta-properties, just as regular properties, will have a value when serialized into a FastTransfer stream. Therefore, wherever a marker exists, it is serialized as 4 bytes. Meta-properties, on the other hand, are serialized the same as propValue elements.
The syntactical structure of a FastTransfer stream is as follows:
-
root = contentsSync / hierarchySync / state / folderContent / messageContent / attachmentContent / messageList / topFolder propValue = <see lexical structure in 2.2.4.1> errorInfo = FXErrorInfo propList propList = *propValue subFolder = StartSubFld folderContent EndFolder subFolderNoDelProps = StartSubFld folderContentNoDelProps EndFolder topFolder = [MetaTagDnPrefix] StartTopFld folderContentNoDelProps EndFolder folderContent = [MetaTagDnPrefix] propList ( [MetaTagNewFXFolder] / folderMessages ) [ MetaTagFXDelProp *subFolder ] folderContentNoDelProps = propList ( MetaTagNewFXFolder / folderMessagesNoDelProps ) [ *subFolderNoDelProps ] folderMessages = *2( MetaTagFXDelProp messageList ) folderMessagesNoDelProps = *2( messageList ) message = ( StartMessage / StartFAIMsg ) messageContent EndMessage messageChildren = [ MetaTagFXDelProp ] [ *recipient ] [ MetaTagFXDelProp ] [ *attachment ] messageContent = [MetaTagDnPrefix] propList messageChildren messageList = *([MetaTagDnPrefix] [MetaTagEcWarning] [message] ) recipient = StartRecip propList EndToRecip attachment = NewAttach PidTagAttachNumber attachmentContent EndAttach attachmentContent = [MetaTagDnPrefix] propList [embeddedMessage] embeddedMessage = StartEmbed messageContent EndEmbed contentsSync = [progressTotal] *( [progressPerMessage] messageChange ) [deletions] [readStateChanges] state IncrSyncEnd hierarchySync = *folderChange [deletions] state IncrSyncEnd deletions = IncrSyncDel propList folderChange = IncrSyncChg propList groupInfo = IncrSyncGroupInfo propList messageChange = messageChangeFull / messageChangePartial messageChangeFull = IncrSyncChg messageChangeHeader IncrSyncMessage propList messageChildren messageChangeHeader = propList messageChangePartial = groupInfo MetaTagIncrSyncGroupId IncrSyncChgPartial messageChangeHeader *( MetaTagIncrementalSyncMessagePartial propList ) messageChildren progressPerMessage = IncrSyncProgressPerMsg propList progressTotal = IncrSyncProgressMode propList readStateChanges = IncrSyncRead propList state = IncrSyncStateBegin propList IncrSyncStateEnd