Exemple #1
0
        public Task <IEnumerable <T> > GetFromSequenceNumber <T>(StreamEntityType entityType, ulong sequenceNumberStart = 0, ulong sequenceNumberEnd = ulong.MaxValue) where T : StreamEntityBase
        {
            var entries = _db.HashGetAll($"{_databaseName}-{entityType}");

            if (entries != null)
            {
                var items = new List <T>();
                foreach (var entry in entries)
                {
                    try
                    {
                        var item = StreamEntityBase.FromProtoBufByteArray(entry.Value) as T;
                        if (item.SequenceNumber >= sequenceNumberStart && item.SequenceNumber <= sequenceNumberEnd)
                        {
                            items.Add(item);
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
                return(Task.FromResult(items.AsEnumerable()));
            }
            else
            {
                return(Task.FromResult <IEnumerable <T> >(null));
            }
        }
 public override void Handle(StreamEntityType type, string content)
 {
     if (type == StreamEntityType.Status)
     {
         Console.WriteLine(content + "\n");
     }
     else
     {
         Successor?.Handle(type, content);
     }
 }
Exemple #3
0
        public async Task <IEnumerable <T> > GetAll <T>(StreamEntityType entityType) where T : StreamEntityBase
        {
            var query = _client.CreateDocumentQuery <T>(
                UriFactory.CreateDocumentCollectionUri(_database, _collection), FeedOptions)
                        .Where(s => s.EntityType == entityType)
                        .AsDocumentQuery();

            var items = new List <T>();

            while (query.HasMoreResults)
            {
                items.AddRange(await query.ExecuteNextAsync <T>());
            }

            return(items);
        }
Exemple #4
0
        public async Task <IEnumerable <T> > GetFromSequenceNumber <T>(StreamEntityType entityType, ulong sequenceNumberStart = 0, ulong sequenceNumberEnd = ulong.MaxValue) where T : StreamEntityBase
        {
            var query = _client.CreateDocumentQuery <T>(
                UriFactory.CreateDocumentCollectionUri(_database, _collection), FeedOptions)
                        .Where(s => s.EntityType == entityType && s.SequenceNumber >= sequenceNumberStart && s.SequenceNumber <= sequenceNumberEnd)
                        .AsDocumentQuery();

            var items = new List <T>();

            while (query.HasMoreResults)
            {
                items.AddRange(await query.ExecuteNextAsync <T>());
            }

            return(items);
        }
Exemple #5
0
 public StreamEntityPersister(StreamEntityType entityType, IStreamPersister persister, CancellationToken cancellationToken, int numPartitions, bool direct = false, int holdOffBusy = 0, int holdOffIdle = 100)
 {
     _numPartitions = numPartitions;
     _partitions    = new StreamEntityPersisterPartition[Math.Max(numPartitions, 1)];
     for (int partitionKey = 0; partitionKey < _partitions.Count(); partitionKey++)
     {
         if (direct)
         {
             _partitions[partitionKey] = new StreamEntityPersisterPartitionDirect(persister, entityType, partitionKey, 100);
         }
         else
         {
             var persisterPartition = new StreamEntityPersisterPartitionAggregateQueueInMemory(persister, entityType, partitionKey, holdOffBusy, holdOffIdle);
             _partitions[partitionKey] = persisterPartition;
             persisterPartition.ProcessPendingItems(cancellationToken);
         }
     }
 }
Exemple #6
0
        public async Task <T> GetById <T>(StreamEntityType entityType, string id) where T : StreamEntityBase
        {
            try
            {
                var document = await _client.ReadDocumentAsync(UriFactory.CreateDocumentUri(_database, _collection, id));

                return((T)(dynamic)document);
            }
            catch (DocumentClientException e)
            {
                if (e.StatusCode == System.Net.HttpStatusCode.NotFound)
                {
                    return(null);
                }
                else
                {
                    throw;
                }
            }
        }
Exemple #7
0
        public Task <T> GetById <T>(StreamEntityType entityType, string id) where T : StreamEntityBase
        {
            var data = _db.HashGet($"{_databaseName}-{entityType}", id);

            if (data.HasValue)
            {
                try
                {
                    return(Task.FromResult(StreamEntityBase.FromProtoBufByteArray(data) as T));
                }
                catch (Exception ex)
                {
                    return(Task.FromResult <T>(null));
                }
            }
            else
            {
                return(Task.FromResult <T>(null));
            }
        }
Exemple #8
0
        public Task <IEnumerable <T> > GetAll <T>(StreamEntityType entityType) where T : StreamEntityBase
        {
            var entries = _db.HashGetAll($"{_databaseName}-{entityType}");

            if (entries != null)
            {
                var items = new List <T>();
                foreach (var entry in entries)
                {
                    try
                    {
                        items.Add(StreamEntityBase.FromProtoBufByteArray(entry.Value) as T);
                    }
                    catch (Exception ex)
                    {
                    }
                }
                return(Task.FromResult(items.AsEnumerable()));
            }
            else
            {
                return(Task.FromResult <IEnumerable <T> >(null));
            }
        }
 public abstract void Handle(StreamEntityType type, string content);
Exemple #10
0
        public Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type)
        {
            var sprocUri = UriFactory.CreateStoredProcedureUri(_database, _collection, BulkImportSprocName);

            return(Task.FromResult <IStreamPersisterBatch>(new CosmosDBStreamPersisterBatch(_client, sprocUri)));
        }
Exemple #11
0
 public async Task <IEnumerable <T> > GetFromSequenceNumber <T>(StreamEntityType entityType, ulong sequenceNumberStart = 0, ulong sequenceNumberEnd = ulong.MaxValue) where T : StreamEntityBase
 {
     return(null);
 }
Exemple #12
0
 public async Task <T> GetById <T>(StreamEntityType entityType, string id) where T : StreamEntityBase
 {
     return(null);
 }
 public Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type)
 {
     return(Task.FromResult <IStreamPersisterBatch>(new StreamPersisterBatch()));
 }
        public StreamEntityPersisterPartitionAggregateQueueInMemory(IStreamPersister persister, StreamEntityType entityType, int partitionKey, int holdOffBusy = 0, int holdOffIdle = 100)
            : base(persister, entityType, partitionKey, holdOffBusy, holdOffIdle)
        {
            var reportingRunning = Interlocked.Exchange(ref _reportingRunning, 1);

            if (reportingRunning == 0)
            {
                ReportMetrics();
            }
        }
Exemple #15
0
 public Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type)
 {
     Interlocked.Increment(ref _numBatches);
     return(Task.FromResult <IStreamPersisterBatch>(new RedisStreamPersisterBatch(_db)));
 }
Exemple #16
0
 public async Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type)
 {
     return(new SqlBatchStreamPersister(this));
 }
 public StreamEntityBase(string streamName, StreamEntityType entityType)
 {
     StreamName = streamName;
     EntityType = entityType;
 }
Exemple #18
0
 public async Task <IEnumerable <T> > GetAll <T>(StreamEntityType entityType) where T : StreamEntityBase
 {
     return(null);
 }
Exemple #19
0
 public StreamEntityPersisterPartition(IStreamPersister persister, StreamEntityType entityType, int partitionKey)
 {
     _persister    = persister;
     _entityType   = entityType;
     _partitionKey = partitionKey;
 }
 public StreamEntityPersisterPartitionQueue(IStreamPersister persister, StreamEntityType entityType, int partitionKey, int holdOffBusy, int holdOffIdle)
     : base(persister, entityType, partitionKey)
 {
     _holdOffBusy = holdOffBusy;
     _holdOffIdle = holdOffIdle;
 }
 public StreamEntityPersisterPartitionDirect(IStreamPersister persister, StreamEntityType entityType, int partitionKey, int numItemsPerBatch = 0)
     : base(persister, entityType, partitionKey)
 {
     _numItemsPerBatch = numItemsPerBatch;
 }