Packages > @fluidframework/datastore-definitions > IChannelFactory

IChannelFactory Interface

Definitions of a channel factory.

Signature

export interface IChannelFactory<out TChannel = unknown>

Type Parameters

Parameter Default Description
TChannel unknown

Remarks

The runtime must be able to produce “channels” of the correct in-memory object type for the collaborative session. Here “channels” are typically distributed data structures (DDSs).

The runtime will consult with a registry of such factories during Container load and when receiving “attach” operations (ops), which indicate a new instance of a channel being introduced to the collaboration session, to produce the appropriate in-memory object.

Factories follow a common model but enable custom behavior.

Example

If a collaboration includes a SharedMap , the collaborating clients will need to have access to a factory that can produce the SharedMap object.

Properties

Property Modifiers Type Description
attributes readonly IChannelAttributes Attributes of the channel.
type readonly string String representing the type of the factory.

Methods

Method Return Type Description
create(runtime, id) TChannel & IChannel Creates a local version of the channel. Calling attach on the object later will insert it into the object stream.
load(runtime, id, services, channelAttributes) Promise<TChannel & IChannel> Loads the given channel. This call is only ever invoked internally as the only thing that is ever directly loaded is the document itself. Load will then only be called on documents that were created and added to a channel.

Property Details

attributes

Attributes of the channel.

Signature

readonly attributes: IChannelAttributes;

type

String representing the type of the factory.

Signature

readonly type: string;

Method Details

create

Creates a local version of the channel. Calling attach on the object later will insert it into the object stream.

Signature

create(runtime: IFluidDataStoreRuntime, id: string): TChannel & IChannel;

Parameters

Parameter Type Description
runtime IFluidDataStoreRuntime The runtime the new object will be associated with
id string The unique ID of the new object

Returns

The newly created object.

Return type: TChannel & IChannel

load

Loads the given channel. This call is only ever invoked internally as the only thing that is ever directly loaded is the document itself. Load will then only be called on documents that were created and added to a channel.

Signature

load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<TChannel & IChannel>;

Parameters

Parameter Type Description
runtime IFluidDataStoreRuntime Data store runtime containing state/info/helper methods about the data store.
id string ID of the channel.
services IChannelServices Services to read objects at a given path using the delta connection.
channelAttributes Readonly<IChannelAttributes> The attributes for the the channel to be loaded.

Returns

The loaded object

Return type: Promise<TChannel & IChannel >