ClientSynchronizer
An instance of this class will be able to handle tasks needed to implement
Differential Synchronization for a specific type of documents.
<T>
the type of Documents that this synchronizer can handle
<D>
the type of Edits that this synchronizer can handle
<P>
the type of PatchMessage that this synchronizer can handle
-
Called when the shadow should be patched. Is called when an update is recieved.
Declaration
Swift
func patchShadow(edit: D, shadow: ShadowDocument<T>) -> ShadowDocument<T>
Parameters
edit
the Edit containing the diffs/patches.
shadowDocument
the ShadowDocument to be patched.
Return Value
ShadowDocument a new patched shadow document.
-
Called when the document should be patched.
Declaration
Swift
func patchDocument(edit: D, clientDocument: ClientDocument<T>) -> ClientDocument<T>
Parameters
edit
the Edit containing the diffs/patches.
document
the ClientDocument to be patched.
Return Value
ClientDocument a new patched document.
-
Produces a Edit containing the changes between updated ShadowDocument and the ClientDocument. This method would be called when the client receives an update from the server and need to produce an Edit to be able to patch the ClientDocument.
Declaration
Swift
func clientDiff(clientDocument: ClientDocument<T>, shadow: ShadowDocument<T>) -> D
Parameters
shadowDocument
the ShadowDocument patched with updates from the server
document
the ClientDocument.
Return Value
Edit the edit representing the diff between the shadow document and the client document.
-
Produces a Edit containing the changes between the updated ClientDocument and the ShadowDocument.
Calling the method is the first step in when starting a client side synchronization. We need to gather the changes between the updates made by the client and the shadow document. The produced Edit can then be passed to the server side.Declaration
Swift
func serverDiff(serverDocument: ClientDocument<T>, shadow: ShadowDocument<T>) -> D
Parameters
document
the ClientDocument containing updates made by the client.
shadowDocument
the ShadowDocument for the ClientDocument.
Return Value
Edit the edit representing the diff between the client document and it’s shadow document.
-
Creates a PatchMessage by parsing the passed-in json.
Declaration
Swift
func patchMessageFromJson(json: String) -> P?
Parameters
json
the json representation of a PatchMessage.
Return Value
PatchMessage the created PatchMessage.
-
Creates a new PatchMessage with the with the type of Edit that this synchronizer can handle.
Declaration
Swift
func createPatchMessage(id: String, clientId: String, edits: [D]) -> P?
Parameters
documentId
the document identifier for the PatchMessage.
clientId
the client identifier for the PatchMessage.
edits
the Edits for the PatchMessage.
Return Value
PatchMessage the created PatchMessage.
-
Adds the content of the passed in content to the ObjectNode.
When a client initially adds a document to the engine it will also be sent across the wire to the server. Before sending, the content of the document has to be added to the JSON message payload. Different implementation will require different content types that the engine can handle and this give them control over how the content is added to the JSON string representation.
For example, a ClientEngine that stores simple text will just add the contents as a String, but one that stores JsonNode object will want to add its content as an object.Declaration
Swift
func addContent(content:ClientDocument<T>, fieldName:String, inout objectNode:String)
Parameters
content
the content to be added.
objectNode
as a string to add the content to.
fieldName
the name of the field.