Yex.Sync.SharedDoc (y_ex v0.8.0)
View SourceThis process handles messages for yjs protocol sync and awareness. https://github.com/yjs/y-protocols
Persistence is supported by passing persistence module. see Yex.Sync.SharedDoc.PersistenceBehaviour
If the observer process does not exist, it will automatically terminate.
Summary
Types
Launch Parameters
Functions
Get the current state of the document.
Receive doc update notifications in the calling process.
Callback implementation for Yex.DocServer.process_message_v1/3
.
Send a message to the SharedDoc process. message mus be represented in the Yjs protocol default format. type supports sync and awareness.
Callback implementation for Yex.DocServer.start/2
.
Callback implementation for Yex.DocServer.start_link/2
.
Start the initial state exchange.
Stop receiving doc update notifications in the calling process.
Update the document with the given function.
Types
@type launch_param() :: {:doc_name, String.t()} | {:persistence, {module() | {module(), init_arg :: term()}}} | {:auto_exit, boolean()} | {:doc_option, Yex.Doc.Options.t()}
Launch Parameters
:doc_name
- The name of the document.:persistence
- Persistence module that implements PersistenceBehaviour.:auto_exit
- Automatically terminate the SharedDoc process when there is no longer a process to receive update notifications.:doc_option
- Options for the document.
Functions
Get the current state of the document.
Returns the Doc struct that represents the current state of the shared document. Note: If you manipulate the structure obtained with this function from a different Node (Erlang VM node), some features may not work (e.g., observe). Please be careful.
Receive doc update notifications in the calling process.
Callback implementation for Yex.DocServer.process_message_v1/3
.
Send a message to the SharedDoc process. message mus be represented in the Yjs protocol default format. type supports sync and awareness.
Callback implementation for Yex.DocServer.start/2
.
Callback implementation for Yex.DocServer.start_link/2
.
Start the initial state exchange.
Stop receiving doc update notifications in the calling process.
If auto_exit is started with true(default), the SharedDoc process will automatically stop when there is no longer a process to receive update notifications.
Update the document with the given function.
The function should take a Doc struct as its argument and modify it as needed. The timeout parameter specifies how long to wait for the update to complete (defaults to 5000ms).
Returns :ok on success or {:error, reason} on failure.
Examples
iex> {:ok, shared_doc} = SharedDoc.start_link(doc_name: "document_name")
iex> SharedDoc.update_doc(shared_doc, fn doc -> Yex.Doc.get_array(doc, "array") |> Array.insert(0, "updated_data") end) # update the document
:ok
iex> SharedDoc.get_doc(shared_doc) |> Yex.Doc.get_array("array") |> Yex.Array.to_json() # check the update
["updated_data"]