public MarketStateCollection(string fixtureId, IUpdatableMarketStateCollection collection)
            : this(fixtureId)
        {
            if (collection == null)
            {
                return;
            }

            Sport = collection.Sport;

            // this is just for creating the nodes
            foreach (var mkt_id in collection.Markets)
            {
                _States[mkt_id] = null;
            }

            ParallelOptions options = new ParallelOptions {
                MaxDegreeOfParallelism = Environment.ProcessorCount
            };

            // fill the nodes and as they are already created, there is no race-condition here
            Parallel.ForEach(collection.Markets, options, x =>
            {
                _States[x] = ((IUpdatableMarketState)collection[x]).Clone();
            }
                             );
        }
        public MarketStateCollection(string fixtureId, IUpdatableMarketStateCollection collection)
            : this(fixtureId)
        {

            if (collection == null)
                return;

            Sport = collection.Sport;

            // this is just for creating the nodes
            foreach (var mkt_id in collection.Markets)
            {
                _States[mkt_id] = null;

            }

            ParallelOptions options = new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount };

            // fill the nodes and as they are already created, there is no race-condition here
            Parallel.ForEach(collection.Markets, options, x =>
                {
                    _States[x] = ((IUpdatableMarketState)collection[x]).Clone();
                }
            );
        }
        public void CommitChanges()
        {
            if (_currentTransaction == null)
                return;

            _logger.DebugFormat("Committing changes made to the market state for fixtureId={0}",_fixtureId);
            _currentTransaction.CommitChanges();
            _stateProvider.SetObject(_fixtureId, _currentTransaction);
            _currentTransaction = null;
        }
Beispiel #4
0
        public void CommitChanges()
        {
            if (_currentTransaction == null)
            {
                return;
            }

            _logger.DebugFormat("Committing changes made to the market state for fixtureId={0}", _fixtureId);
            _currentTransaction.CommitChanges();
            _stateProvider.SetObject(_fixtureId, _currentTransaction);
            _currentTransaction = null;
        }
        public void WhenMarketFiltersAreInitiated()
        {
            _marketsCache = null;
            _fixture.Markets.Clear();
            _fixture.Markets.AddRange(_markets);
            var objectProviderMock = new Mock<IStoredObjectProvider>();
            objectProviderMock.Setup(x => x.GetObject(It.IsAny<string>())).Returns(() => _marketsCache);
            objectProviderMock.Setup(x => x.SetObject(It.IsAny<string>(), It.IsAny<IUpdatableMarketStateCollection>()))
                .Callback<string, IUpdatableMarketStateCollection>((s, newState) => _marketsCache = newState);

            List<IMarketRule> rules = new List<IMarketRule> { InactiveMarketsFilteringRule.Instance, DeletedMarketsRule.Instance, VoidUnSettledMarket.Instance };

            _marketFilters = new MarketRulesManager(_fixture.Id, objectProviderMock.Object, rules);
        }
Beispiel #6
0
        private void BeginTransaction(IUpdatableMarketStateCollection oldState, Fixture fixture)
        {
            // get a new market state by cloning the previous one
            // and then updating it with the new info coming within
            // the snapshot

            bool fullSnapshot = fixture.Tags != null && fixture.Tags.Any();

            _logger.DebugFormat("Start transaction for fixtureId={0} - tags will {1}be updated", fixture.Id, (fullSnapshot ? "" : "not "));

            var clone = new MarketStateCollection(fixture.Id, oldState);

            clone.Update(fixture, fullSnapshot);

            _currentTransaction = clone;
        }
        public void WhenMarketFiltersAreInitiated()
        {
            _marketsCache = null;
            _fixture.Markets.Clear();
            _fixture.Markets.AddRange(_markets);
            var objectProviderMock = new Mock <IStoredObjectProvider>();

            objectProviderMock.Setup(x => x.GetObject(It.IsAny <string>())).Returns(() => _marketsCache);
            objectProviderMock.Setup(x => x.SetObject(It.IsAny <string>(), It.IsAny <IUpdatableMarketStateCollection>()))
            .Callback <string, IUpdatableMarketStateCollection>((s, newState) => _marketsCache = newState);

            List <IMarketRule> rules = new List <IMarketRule> {
                InactiveMarketsFilteringRule.Instance, DeletedMarketsRule.Instance, VoidUnSettledMarket.Instance
            };

            _marketFilters = new MarketRulesManager(_fixture.Id, objectProviderMock.Object, rules);
        }
        public void SetUp()
        {
            _marketStorage = null;
            _objectProvider = null;

            SetUpSnapshotAndMarkets();

            var objectProviderMock = new Mock<IStoredObjectProvider>();

            // if there's a better way of assigning parameter let me know
            objectProviderMock.Setup(x => x.SetObject(It.IsAny<string>(), It.IsAny<IUpdatableMarketStateCollection>()))
                              .Callback<string, IUpdatableMarketStateCollection>((s, newState) => _marketStorage = newState);

            objectProviderMock.Setup(x => x.GetObject(It.IsAny<string>())).Returns(() => _marketStorage);

            _objectProvider = objectProviderMock.Object;
        }
Beispiel #9
0
 public void SetObject(string fixtureId, IUpdatableMarketStateCollection state)
 {
     _persistanceLayer.SetObject(fixtureId, state);
 }
Beispiel #10
0
 public void RollbackChanges()
 {
     _logger.DebugFormat("Rolling back changes for fixtureId={0}", _fixtureId);
     _currentTransaction = null;
 }
 public void RollbackChanges()
 {
     _logger.DebugFormat("Rolling back changes for fixtureId={0}", _fixtureId);
     _currentTransaction = null;
 }
        private void BeginTransaction(IUpdatableMarketStateCollection oldState, Fixture fixture)
        {
           
            // get a new market state by cloning the previous one
            // and then updating it with the new info coming within
            // the snapshot

            bool fullSnapshot = fixture.Tags != null && fixture.Tags.Any();

            _logger.DebugFormat("Start transaction for fixtureId={0} - tags will {1}be updated", fixture.Id, (fullSnapshot ? "" : "not "));

            var clone = new MarketStateCollection(fixture.Id, oldState);
            clone.Update(fixture, fullSnapshot);
               
            _currentTransaction = clone;
        }