Skip to content

BlockSuite API Documentation / @blocksuite/sync / SyncPeer

Class: SyncPeer

Defined in: doc/peer.ts:54

DocPeer

A DocPeer is responsible for syncing one Storage with one Y.Doc and its subdocs.

                   ┌─────┐
                   │Start│
                   └──┬──┘

   ┌──────┐     ┌─────▼──────┐        ┌────┐
   │listen◄─────┤pull rootdoc│        │peer│
   └──┬───┘     └─────┬──────┘        └──┬─┘
      │               │ onLoad()         │
   ┌──▼───┐     ┌─────▼──────┐      ┌────▼────┐
   │listen◄─────┤pull subdocs│      │subscribe│
   └──┬───┘     └─────┬──────┘      └────┬────┘
      │               │ onReady()        │
   ┌──▼──┐      ┌─────▼───────┐       ┌──▼──┐
   │queue├──────►apply updates◄───────┤queue│
   └─────┘      └─────────────┘       └─────┘

listen: listen for updates from ydoc, typically from user modifications. subscribe: listen for updates from storage, typically from other users.

Constructors

new SyncPeer()

new SyncPeer(rootDoc, source, priorityTarget, logger): SyncPeer

Defined in: doc/peer.ts:153

Parameters

rootDoc

Doc

source

DocSource

priorityTarget

SharedPriorityTarget = ...

logger

Logger

Returns

SyncPeer

Properties

abort

readonly abort: AbortController

Defined in: doc/peer.ts:63


logger

readonly logger: Logger

Defined in: doc/peer.ts:157


onStatusChange

readonly onStatusChange: Subject<DocPeerStatus>

Defined in: doc/peer.ts:113


priorityTarget

readonly priorityTarget: SharedPriorityTarget

Defined in: doc/peer.ts:156


rootDoc

readonly rootDoc: Doc

Defined in: doc/peer.ts:154


source

readonly source: DocSource

Defined in: doc/peer.ts:155


state

readonly state: object

Defined in: doc/peer.ts:115

connectedDocs

connectedDocs: Map<string, Doc>

pullUpdatesQueue

pullUpdatesQueue: PriorityAsyncQueue<{ data: Uint8Array; id: string; }>

pushingUpdate

pushingUpdate: boolean

pushUpdatesQueue

pushUpdatesQueue: PriorityAsyncQueue<{ data: Uint8Array<ArrayBufferLike>[]; id: string; }>

subdocLoading

subdocLoading: boolean

subdocsLoadQueue

subdocsLoadQueue: PriorityAsyncQueue<{ doc: Doc; id: string; }>

Accessors

name

Get Signature

get name(): string

Defined in: doc/peer.ts:137

Returns

string

Methods

connectDoc()

connectDoc(doc, abort): Promise<void>

Defined in: doc/peer.ts:167

Parameters

doc

Doc

abort

AbortSignal

Returns

Promise<void>


disconnectDoc()

disconnectDoc(doc): void

Defined in: doc/peer.ts:193

Parameters

doc

Doc

Returns

void


handleStorageUpdates()

handleStorageUpdates(id, data): void

Defined in: doc/peer.ts:66

Parameters

id

string

data

Uint8Array

Returns

void


handleSubdocsUpdate()

handleSubdocsUpdate(__namedParameters): void

Defined in: doc/peer.ts:75

Parameters

__namedParameters
added

Set<Doc>

removed

Set<Doc>

Returns

void


handleYDocUpdates()

handleYDocUpdates(update, origin, doc): void

Defined in: doc/peer.ts:94

Parameters

update

Uint8Array

origin

string

doc

Doc

Returns

void


initState()

initState(): void

Defined in: doc/peer.ts:199

Returns

void


stop()

stop(): void

Defined in: doc/peer.ts:213

stop sync

DocPeer is one-time use, this peer should be discarded after call stop().

Returns

void


sync()

sync(abortOuter): Promise<void>

Defined in: doc/peer.ts:221

main synchronization logic

Parameters

abortOuter

AbortSignal

Returns

Promise<void>


syncRetryLoop()

syncRetryLoop(abort): Promise<void>

Defined in: doc/peer.ts:331

auto retry after 5 seconds if sync failed

Parameters

abort

AbortSignal

Returns

Promise<void>


updateSyncStatus()

updateSyncStatus(): void

Defined in: doc/peer.ts:376

Returns

void


waitForLoaded()

waitForLoaded(abort?): Promise<void>

Defined in: doc/peer.ts:404

Parameters

abort?

AbortSignal

Returns

Promise<void>


waitForSynced()

waitForSynced(abort?): Promise<void>

Defined in: doc/peer.ts:428

Parameters

abort?

AbortSignal

Returns

Promise<void>