Пример #1
0
        private static void CanAddAndGet(RemoteMarketDataSnapshotMaster snapshotMaster)
        {
            var changeManager             = snapshotMaster.ChangeManager;
            var aggregatingChangeListener = new AggregatingChangeListener();

            changeManager.AddChangeListener(aggregatingChangeListener);
            try
            {
                var name = TestUtils.GetUniqueName();

                var marketDataSnapshotDocument = snapshotMaster.Add(GetDocument(name));

                Thread.Sleep(TimeSpan.FromSeconds(1));
                List <ChangeEvent> events = aggregatingChangeListener.GetAndClearEvents();
                var addEvent = events.Single(e => e.Type == ChangeType.Added && e.AfterId.Equals(marketDataSnapshotDocument.UniqueId));

                var retDoc = snapshotMaster.Get(marketDataSnapshotDocument.UniqueId);
                Assert.NotNull(retDoc);
                Assert.NotEqual(DateTimeOffset.MinValue, retDoc.VersionFromInstant);
                Assert.NotEqual(DateTimeOffset.MinValue, retDoc.CorrectionFromInstant);

                Assert.Equal(retDoc.VersionFromInstant, addEvent.VersionInstant.ToDateTimeOffset());

                AssertEqual(retDoc, marketDataSnapshotDocument);

                snapshotMaster.Remove(marketDataSnapshotDocument.UniqueId);

                Thread.Sleep(TimeSpan.FromSeconds(1));
                events = aggregatingChangeListener.GetAndClearEvents();
                var removeEvent = events.Single(e => e.Type == ChangeType.Removed && e.BeforeId.Equals(marketDataSnapshotDocument.UniqueId));

                var deleted = snapshotMaster.Get(marketDataSnapshotDocument.UniqueId);
                Assert.Equal(deleted.VersionToInstant, removeEvent.VersionInstant.ToDateTimeOffset());
            }
            finally
            {
                changeManager.RemoveChangeListener(aggregatingChangeListener);
            }
        }
Пример #2
0
        public Dictionary <YieldCurveKey, Tuple <YieldCurve, InterpolatedYieldCurveSpecificationWithSecurities, NodalDoublesCurve> > GetYieldCurves(CancellationToken ct = default(CancellationToken))
        {
            CheckDisposed();

            DateTimeOffset waitFor;
            ManageableMarketDataSnapshot shallowClone = GetShallowCloneSnapshot();

            lock (_snapshotUidLock)
            {
                shallowClone.UniqueId = _temporarySnapshotUid.Value;
                var snapshot = _marketDataSnapshotMaster.Update(new MarketDataSnapshotDocument(_temporarySnapshotUid.Value, shallowClone));
                _temporarySnapshotUid = new Lazy <UniqueId>(() => snapshot.UniqueId);

                waitFor = _marketDataSnapshotMaster.Get(_temporarySnapshotUid.Value).CorrectionFromInstant;
            }
            return(_snapshotDataStream.Value.With(ct, s => s.GetYieldCurves(waitFor, ct)));
        }