Пример #1
0
        public IndexedSagaDictionary()
        {
            _indices = new Dictionary <string, IndexedSagaProperty <TSaga> >();

            BuildIndices();

            _indexById = _indices["CorrelationId"];
        }
Пример #2
0
        public IEnumerable <TSaga> Where(ISagaFilter <TSaga> filter)
        {
            lock (_lock)
            {
                IndexedSagaProperty <TSaga> index = HasIndexFor(filter.FilterExpression);
                if (index == null)
                {
                    return(_indexById.Where(filter.Filter).ToList());
                }

                object rightValue = GetRightValue(filter.FilterExpression);

                return(index.Where(rightValue, filter.Filter).ToList());
            }
        }
Пример #3
0
        public IEnumerable <SagaInstance <TSaga> > Where(ISagaQuery <TSaga> query)
        {
            lock (_lock)
            {
                IndexedSagaProperty <TSaga> index = HasIndexFor(query.FilterExpression);
                if (index == null)
                {
                    return(_indexById.Where(query.GetFilter()).ToList());
                }

                object rightValue = GetRightValue(query.FilterExpression);

                return(index.Where(rightValue, query.GetFilter()).ToList());
            }
        }