public static void Create(LogicLong ownerId, AvatarStreamEntry entry) { StreamDocument streamDocument = new StreamDocument(StreamManager.GetNextStreamId(), ownerId, entry); StreamManager.m_avatarStreams.Add(streamDocument.Id, streamDocument); StreamManager.Save(streamDocument); }
public static CosmosStream ToCosmosStream(this StreamDocument document, IEnumerable <EventDocument> eventDocs) => CosmosStream.Create(document.OriginalId, document.Type, new Core.Version(document.Version).WithMetaData(document.Etag), StreamReadStatus.Success, ReadDirection.Forward, eventDocs.Select(e => CosmosEvent.Create(e.StreamId, e.OriginalId, e.Position, e.Type, e.Data, e.EventMetadata, DateTime.Now)) .ToArray());
public static void Create(byte[] entry, out LogicLong id) { StreamDocument streamDocument = new StreamDocument(StreamManager.GetNextStreamId(), new ReplayStreamEntry(entry)); StreamManager.m_replayStreams.Add(streamDocument.Id, streamDocument); StreamManager.Save(streamDocument); id = streamDocument.Id; }
/// <summary> /// Loads the unit from the given stream. The caller should dispose the /// stream after the API is called (the stream contents will have been copied /// to unmanaged memory already). /// </summary> /// <param name="location">The location to be exposed from IUnit</param> /// <param name="stream">The data to be used as the unit</param> public IUnit LoadUnitFrom(string location, Stream stream) { string fileName = Path.GetFileName(location); IName name = this.NameTable.GetNameFor(fileName); StreamDocument document = new StreamDocument(location, name, stream); IModule unit = _reader.OpenModule(document); this.RegisterAsLatest(unit); return(unit); }
public static void Init() { StreamManager.m_allianceStreams = new Dictionary <long, StreamDocument>(); StreamManager.m_avatarStreams = new Dictionary <long, StreamDocument>(); StreamManager.m_replayStreams = new Dictionary <long, StreamDocument>(); StreamManager.m_counters = ServerStream.StreamDatabase.GetDocumentHigherIDs(); object locker = new object(); for (int i = 0; i < EnvironmentSettings.HigherIdCounterSize; i++) { int highId = i; int higherId = 0; Parallel.For(1, StreamManager.m_counters[i] + 1, lowId => { LogicLong id = new LogicLong(highId, lowId); IOperationResult <string> result = ServerStream.StreamDatabase.Get(id).Result; if (result.Success) { StreamDocument document = CouchbaseDocument.Load <StreamDocument>(result.Value); if (ServerManager.GetDocumentSocket(11, document.Type == StreamType.REPLAY ? document.Id : document.OwnerId).ServerId == ServerCore.Id) { lock (locker) { switch (document.Type) { case StreamType.ALLIANCE: StreamManager.m_allianceStreams.Add(id, document); break; case StreamType.AVATAR: StreamManager.m_avatarStreams.Add(id, document); break; case StreamType.REPLAY: StreamManager.m_replayStreams.Add(id, document); break; } if (higherId < lowId) { higherId = lowId; } } } } }); StreamManager.m_counters[i] = higherId; } }
public static void Save(AvatarStreamEntry entry) { StreamDocument document = StreamManager.m_avatarStreams[entry.GetId()]; ServerStream.StreamDatabase.InsertOrUpdate(document.Id, CouchbaseDocument.Save(document)); }
private static void Save(StreamDocument document) { ServerStream.StreamDatabase.InsertOrUpdate(document.Id, CouchbaseDocument.Save(document)); }
public static CosmosStream ToCosmosStream(this StreamDocument document) => CosmosStream.Create(document.OriginalId, document.Type, document.Version, StreamReadStatus.Success, ReadDirection.Forward, Array.Empty <CosmosEvent>());