2.2.4.2 Syntactical Structure

The syntactical structure of the FastTransfer adheres to the following guidelines:

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