Esempio n. 1
0
        public void TryPeer(IPeer peer)
        {
            Peer = peer;

            if (Peer == null)
            {
                throw new InvalidOperationException($"Peer cannot be null.");
            }

            if (RequestMessage == null)
            {
                throw new InvalidOperationException($"RequestMessage cannot be null.");
            }

            if (!HasTimedOut)
            {
                throw new InvalidOperationException($"Cannot switch peer before timeout.");
            }

            if (HasReachedMaxRetry)
            {
                throw new InvalidOperationException($"Cannot retry : max retry count reached.");
            }

            TriedPeers.Add(peer);
            Peer.EnqueueOutgoing(RequestMessage);

            _timeoutTimer.Start();
            HasTimedOut = false;
            RetryCount++;
        }