public StreamID Register(IStreamProvider provider) { lock (this) { StreamID streamID = InternalGetNextStreamID(); InternalRegister(streamID, provider); if (StreamTracingEnabled) { StreamEvents.Add(new RegisterStreamEvent(streamID)); } return(streamID); } }
public override StreamID Allocate() { lock (this) { StreamID streamID = InternalGetNextStreamID(); if (StreamTracingEnabled) { StreamEvents.Add(new AllocateStreamEvent(streamID)); } _defaultProvider.Create(streamID); InternalRegister(streamID, _defaultProvider); return(streamID); } }
public override StreamID Reference(StreamID streamID) { lock (this) { StreamID localStreamID = InternalGetNextStreamID(); StreamHeader header = GetStreamHeader(streamID); if (StreamTracingEnabled) { StreamEvents.Add(new ReferenceStreamEvent(localStreamID, header.StreamID)); } header.References.Add(localStreamID); _referencingHeaders.Add(localStreamID, streamID); InternalRegister(localStreamID, _defaultProvider); return(localStreamID); } }