示例#1
0
        protected MessageCorrelationManagerBase(IMemoryCache cache,
                                                ILogger logger,
                                                IChangeTokenProvider changeTokenProvider)
        {
            PendingRequests = cache;
            Logger          = logger;

            _entryOptions = () => new MemoryCacheEntryOptions()
                            .AddExpirationToken(changeTokenProvider.GetChangeToken())
                            .RegisterPostEvictionCallback(EvictionCallback);
        }
示例#2
0
        public RpcMessageCorrelationManager(IMemoryCache cache,
                                            ILogger logger,
                                            IChangeTokenProvider changeTokenProvider,
                                            IScheduler scheduler = null)
            : base(cache, logger, changeTokenProvider)
        {
            var observableScheduler = scheduler ?? Scheduler.Default;

            _evictionEvent = new ReplaySubject <ICacheEvictionEvent <ProtocolMessage> >(0, observableScheduler);
            EvictionEvents = _evictionEvent.AsObservable();
        }
示例#3
0
        public DiscoveryTestBuilder WithPeerMessageCorrelationManager(IPeerMessageCorrelationManager peerMessageCorrelationManager = default,
                                                                      IReputationManager reputationManager     = default,
                                                                      IMemoryCache memoryCache                 = default,
                                                                      IChangeTokenProvider changeTokenProvider = default)
        {
            _peerCorrelationManager = peerMessageCorrelationManager ??
                                      DiscoveryHelper.MockCorrelationManager(_scheduler, reputationManager, memoryCache, changeTokenProvider,
                                                                             _logger);

            return(this);
        }
示例#4
0
 public static IPeerMessageCorrelationManager MockCorrelationManager(IScheduler scheduler,
                                                                     IReputationManager reputationManager     = default,
                                                                     IMemoryCache memoryCache                 = default,
                                                                     IChangeTokenProvider changeTokenProvider = default,
                                                                     ILogger logger = default)
 {
     return(new PeerMessageCorrelationManager(
                reputationManager ?? Substitute.For <IReputationManager>(),
                memoryCache ?? Substitute.For <IMemoryCache>(),
                logger ?? Substitute.For <ILogger>(),
                changeTokenProvider ?? new TtlChangeTokenProvider(3),
                scheduler));
 }
        public PeerMessageCorrelationManager(IReputationManager reputationManager,
                                             IMemoryCache cache,
                                             ILogger logger,
                                             IChangeTokenProvider changeTokenProvider,
                                             IScheduler scheduler = null) : base(cache, logger, changeTokenProvider)
        {
            var streamScheduler = scheduler ?? Scheduler.Default;

            _reputationEvent      = new ReplaySubject <IPeerReputationChange>(0, streamScheduler);
            ReputationEventStream = _reputationEvent.AsObservable();
            _evictionEvent        = new ReplaySubject <KeyValuePair <ICorrelationId, PeerId> >(0, streamScheduler);
            EvictionEventStream   = _evictionEvent.AsObservable();

            reputationManager.MergeReputationStream(ReputationEventStream);
        }
        protected MessageCorrelationManagerTests()
        {
            SubbedLogger        = Substitute.For <ILogger>();
            ChangeTokenProvider = Substitute.For <IChangeTokenProvider>();
            var changeToken = Substitute.For <IChangeToken>();

            ChangeTokenProvider.GetChangeToken().Returns(changeToken);
            Cache = Substitute.For <IMemoryCache>();

            _senderPeerId = PeerIdHelper.GetPeerId("sender");
            PeerIds       = new[]
            {
                PeerIdHelper.GetPeerId("peer1"),
                PeerIdHelper.GetPeerId("peer2"),
                PeerIdHelper.GetPeerId("peer3")
            };
        }