Skip to main content
Version: v1

SharedObject Class

SharedObject with simplified, synchronous summarization and GC. DDS implementations with async and incremental summarization should extend SharedObjectCore directly instead.

Signature

export declare abstract class SharedObject<TEvent extends ISharedObjectEvents = ISharedObjectEvents> extends SharedObjectCore<TEvent>

Extends: SharedObjectCore

Type Parameters

ParameterConstraintDefaultDescription
TEventISharedObjectEventsISharedObjectEvents

Constructors

ConstructorDescription
(constructor)(id, runtime, attributes, telemetryContextPrefix)Constructs a new instance of the SharedObject class

Properties

PropertyTypeDescription
serializerIFluidSerializer

Methods

MethodReturn TypeDescription
getAttachSummary(fullTree, trackState, telemetryContext)ISummaryTreeWithStatsGenerates summary of the channel synchronously. It is called when an attach message for a local channel is generated. In other words, when the channel is being attached to make it visible to other clients. Note: Since Attach Summary is generated for local channels when making them visible to remote clients, they don't have any previous summaries to compare against. For this reason, The attach summary cannot contain summary handles (paths to sub-trees or blobs). It can, however, contain ISummaryAttachment (handles to blobs uploaded async via the blob manager).
getGCData(fullGC)IGarbageCollectionDataReturns the GC data for this shared object. It contains a list of GC nodes that contains references to other GC nodes.
processGCDataCore(serializer)voidCalls the serializer over all data in this object that reference other GC nodes. Derived classes must override this to provide custom list of references to other GC nodes.
summarize(fullTree, trackState, telemetryContext)Promise<ISummaryTreeWithStats>Generates summary of the channel asynchronously. This should not be called where the channel can be modified while summarization is in progress.
summarizeCore(serializer, telemetryContext)ISummaryTreeWithStatsGets a form of the object that can be serialized.

Constructor Details

(constructor)

Constructs a new instance of the SharedObject class

Signature

constructor(id: string, runtime: IFluidDataStoreRuntime, attributes: IChannelAttributes, telemetryContextPrefix: string);

Parameters

ParameterTypeDescription
idstringThe id of the shared object
runtimeIFluidDataStoreRuntimeThe IFluidDataStoreRuntime which contains the shared object
attributesIChannelAttributesAttributes of the shared object
telemetryContextPrefixstring

Property Details

serializer

Signature

protected get serializer(): IFluidSerializer;

Type: IFluidSerializer

Method Details

getAttachSummary

Generates summary of the channel synchronously. It is called when an attach message for a local channel is generated. In other words, when the channel is being attached to make it visible to other clients. Note: Since Attach Summary is generated for local channels when making them visible to remote clients, they don't have any previous summaries to compare against. For this reason, The attach summary cannot contain summary handles (paths to sub-trees or blobs). It can, however, contain ISummaryAttachment (handles to blobs uploaded async via the blob manager).

Signature

getAttachSummary(fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;

Parameters

ParameterModifiersTypeDescription
fullTreeoptionalbooleanflag indicating whether the attempt should generate a full summary tree without any handles for unchanged subtrees.
trackStateoptionalbooleanoptimization for tracking state of objects across summaries. If the state of an object did not change since last successful summary, an ISummaryHandle can be used instead of re-summarizing it. If this is false, the expectation is that you should never send an ISummaryHandle since you are not expected to track state. Note: The goal is to remove the trackState and automatically decided whether the handles will be used or not: https://github.com/microsoft/FluidFramework/issues/10455
telemetryContextoptionalITelemetryContext

Returns

A summary capturing the current state of the channel.

Return type: ISummaryTreeWithStats

getGCData

Returns the GC data for this shared object. It contains a list of GC nodes that contains references to other GC nodes.

Signature

getGCData(fullGC?: boolean): IGarbageCollectionData;

Parameters

ParameterModifiersTypeDescription
fullGCoptionalbooleantrue to bypass optimizations and force full generation of GC data.

Returns

Return type: IGarbageCollectionData

processGCDataCore

Calls the serializer over all data in this object that reference other GC nodes. Derived classes must override this to provide custom list of references to other GC nodes.

Signature

protected processGCDataCore(serializer: SummarySerializer): void;

Parameters

ParameterTypeDescription
serializerSummarySerializer

summarize

Generates summary of the channel asynchronously. This should not be called where the channel can be modified while summarization is in progress.

Signature

summarize(fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): Promise<ISummaryTreeWithStats>;

Parameters

ParameterModifiersTypeDescription
fullTreeoptionalbooleanflag indicating whether the attempt should generate a full summary tree without any handles for unchanged subtrees. It is only set to true when generating a summary from the entire container.
trackStateoptionalbooleanThis tells whether we should track state from this summary.
telemetryContextoptionalITelemetryContext

Returns

A summary capturing the current state of the channel.

Return type: Promise<ISummaryTreeWithStats>

summarizeCore

Gets a form of the object that can be serialized.

Signature

protected abstract summarizeCore(serializer: IFluidSerializer, telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;

Parameters

ParameterModifiersTypeDescription
serializerIFluidSerializer
telemetryContextoptionalITelemetryContext

Returns

A tree representing the snapshot of the shared object.

Return type: ISummaryTreeWithStats