pub struct DocHandler {
pub doc_name: String,
pub broadcast_tx: Sender<Vec<u8>>,
/* private fields */
}Expand description
A handler for a single Yjs document/room Manages the document state, persistence, and broadcasting
Note: We use std::sync::Mutex for the Doc because yrs::Doc operations are synchronous and fast. tokio::sync::Mutex would cause unnecessary overhead.
Fields§
§doc_name: String§broadcast_tx: Sender<Vec<u8>>Broadcast channel for sending updates to other clients
Implementations§
Source§impl DocHandler
impl DocHandler
pub async fn new(doc_name: String) -> Self
Sourcepub fn generate_initial_sync(&self) -> Vec<Vec<u8>>
pub fn generate_initial_sync(&self) -> Vec<Vec<u8>>
Generate the initial sync messages to send when a client connects Returns: [SyncStep1(server_state_vector)]
Sourcepub async fn handle_message(&self, msg_data: &[u8]) -> Vec<Vec<u8>>
pub async fn handle_message(&self, msg_data: &[u8]) -> Vec<Vec<u8>>
Process an incoming message from a client Returns a list of response messages to send back to this client Also broadcasts updates to other clients via the broadcast channel
Sourcepub fn read_and_skip_doc_name(data: &[u8]) -> Option<(&[u8], String)>
pub fn read_and_skip_doc_name(data: &[u8]) -> Option<(&[u8], String)>
Helper to read the VarString document name and return the rest of the buffer
Sourcepub fn encode_hocuspocus_message(&self, msg_type: u8, payload: &[u8]) -> Vec<u8> ⓘ
pub fn encode_hocuspocus_message(&self, msg_type: u8, payload: &[u8]) -> Vec<u8> ⓘ
Wraps a raw payload in the Hocuspocus V2 protocol structure: [DocName : VarString] [MsgType : VarUint] [Payload : Bytes]
Sourcepub fn apply_update(
&self,
update_data: &[u8],
) -> Result<(), Box<dyn Error + Send + Sync>>
pub fn apply_update( &self, update_data: &[u8], ) -> Result<(), Box<dyn Error + Send + Sync>>
Apply a Yjs update to the document
Sourcepub async fn request_persist(&self)
pub async fn request_persist(&self)
Request persistence with debouncing
Sourcepub async fn force_persist(&self)
pub async fn force_persist(&self)
Force immediate persistence (for graceful shutdown)