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); } }
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))); }