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);
        }
Example #2
0
 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;
        }
Example #4
0
        /// <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));
 }
Example #8
0
 public static CosmosStream ToCosmosStream(this StreamDocument document) =>
 CosmosStream.Create(document.OriginalId, document.Type, document.Version, StreamReadStatus.Success,
                     ReadDirection.Forward, Array.Empty <CosmosEvent>());