Beispiel #1
0
        public void AddFiles(List <FreeFilesServerConsole.EF.File> FilesList, Entities.Peer peer)
        {
            fileRepository.AddFiles(FilesList);
            PeerRepository peerRepository = new PeerRepository(_freeFilesObjectContext as FreeFilesServerConsole.IUnitOfWork);

            peerRepository.AddPeer(FreeFilesServerConsole.EntityUtility.externalPeerToEFPeer(peer));
            SaveFile();
        }
Beispiel #2
0
        /// <summary>Executes the test case.</summary>
        /// <param name="fakePeers">The fake peers.</param>
        /// <param name="withPublicKey">if set to <c>true</c> [send message to handler with the public key].</param>
        private void ExecuteTestCase(IReadOnlyCollection <string> fakePeers, bool withPublicKey)
        {
            var             testScheduler  = new TestScheduler();
            IPeerRepository peerRepository = new PeerRepository(new InMemoryRepository <Peer, string>());
            var             fakePeerList   = fakePeers.ToList().Select(fakePeer =>
            {
                return(new Peer
                {
                    Reputation = 0,
                    LastSeen = DateTime.Now.Subtract(TimeSpan.FromSeconds(fakePeers.ToList().IndexOf(fakePeer))),
                    PeerId = PeerIdHelper.GetPeerId(fakePeer)
                });
            }).ToList();

            var targetPeerToDelete = fakePeerList[0];

            peerRepository.Add(fakePeerList);

            // Build a fake remote endpoint
            _fakeContext.Channel.RemoteAddress.Returns(EndpointBuilder.BuildNewEndPoint("192.0.0.1", 42042));

            var peerId = PeerIdHelper.GetPeerId("sender");

            var removePeerRequest = new RemovePeerRequest
            {
                PeerIp    = targetPeerToDelete.PeerId.Ip,
                PublicKey = withPublicKey ? targetPeerToDelete.PeerId.PublicKey : ByteString.Empty
            };

            var protocolMessage = removePeerRequest.ToProtocolMessage(peerId);

            var messageStream =
                MessageStreamHelper.CreateStreamWithMessage(_fakeContext, testScheduler, protocolMessage);

            var peerSettings = peerId.ToSubstitutedPeerSettings();
            var handler      = new RemovePeerRequestObserver(peerSettings, peerRepository, _logger);

            handler.StartObserving(messageStream);

            testScheduler.Start();

            var receivedCalls = _fakeContext.Channel.ReceivedCalls().ToList();

            receivedCalls.Count().Should().Be(1);

            var sentResponseDto = (IMessageDto <ProtocolMessage>)receivedCalls[0].GetArguments().Single();

            var signResponseMessage = sentResponseDto.Content.FromProtocolMessage <RemovePeerResponse>();

            signResponseMessage.DeletedCount.Should().Be(withPublicKey ? 1 : (uint)fakePeers.Count);
        }
        public async void OnNext(IPeerReputationChange peerReputationChange)
        {
            await SemaphoreSlim.WaitAsync().ConfigureAwait(false);

            try
            {
                var peer = PeerRepository.GetAll().FirstOrDefault(p => p.PeerId.Equals(peerReputationChange.PeerId));
                Guard.Argument(peer, nameof(peer)).NotNull();

                peer.Reputation += peerReputationChange.ReputationEvent.Amount;
                PeerRepository.Update(peer);
            }
            finally
            {
                SemaphoreSlim.Release();
            }
        }
Beispiel #4
0
        // ReSharper disable once VSTHRD100
        public async void OnNext(IPeerReputationChange peerReputationChange)
        {
            try
            {
                await SemaphoreSlim.WaitAsync().ConfigureAwait(false);

                var peer = PeerRepository.GetAll().FirstOrDefault(p => p.PeerId.Equals(peerReputationChange.PeerId));
                Guard.Argument(peer, nameof(peer)).NotNull();

                // ReSharper disable once PossibleNullReferenceException
                peer.Reputation += peerReputationChange.ReputationEvent.Amount;
                PeerRepository.Update(peer);
            }
            catch (Exception e)
            {
                _logger.Error(e, e.Message);
            }
            finally
            {
                SemaphoreSlim.Release();
            }
        }
Beispiel #5
0
        public void OnNext(IPeerReputationChange peerReputationChange)
        {
            try
            {
                var peer = PeerRepository.GetAll().FirstOrDefault(p => p.PeerId.Equals(peerReputationChange.PeerId));
                //todo come back to later
                if (peer == null)
                {
                    return;
                }

                Guard.Argument(peer, nameof(peer)).NotNull();

                // ReSharper disable once PossibleNullReferenceException
                peer.Reputation += peerReputationChange.ReputationEvent.Amount;
                PeerRepository.Update(peer);
            }
            catch (Exception e)
            {
                _logger.Error(e, e.Message);
            }
        }
Beispiel #6
0
 public void Dispose()
 {
     ReputationEvent?.Dispose();
     PeerRepository?.Dispose();
 }
Beispiel #7
0
 public PeerService(IMediator mediator, PeerRepository peers)
 {
     _mediator = mediator;
     _peers    = peers;
 }
Beispiel #8
0
 public CommunicationService(PeerRepository peers)
 {
     _peers = peers;
 }