public virtual TestProtocolServer AddServer(int serverId, URI serverUri) { TestProtocolServer server = NewTestProtocolServer(serverId, serverUri); Debug(serverUri.ToString(), "joins network"); Participants[serverUri.ToString()] = server; return(server); }
protected internal virtual TestProtocolServer NewTestProtocolServer(int serverId, URI serverUri) { ProtocolServerFactory protocolServerFactory = new MultiPaxosServerFactory(new ClusterConfiguration("default", _logService.InternalLogProvider), _logService.InternalLogProvider, _monitors.newMonitor(typeof(StateMachines.Monitor))); ServerIdElectionCredentialsProvider electionCredentialsProvider = new ServerIdElectionCredentialsProvider(); electionCredentialsProvider.ListeningAt(serverUri); TestProtocolServer protocolServer = new TestProtocolServer(_logService.InternalLogProvider, _timeoutStrategy, protocolServerFactory, serverUri, new InstanceId(serverId), new InMemoryAcceptorInstanceStore(), electionCredentialsProvider); protocolServer.AddStateTransitionListener(new StateTransitionLogger(_logService.InternalLogProvider, new AtomicBroadcastSerializer(new ObjectStreamFactory(), new ObjectStreamFactory()))); return(protocolServer); }
public TestMessageSource(TestProtocolServer outerInstance) { this._outerInstance = outerInstance; }
public virtual int Tick() { // Deliver messages whose delivery time has passed _now += _tickDuration; // logger.debug( "tick:"+now ); IEnumerator <MessageDelivery> iter = _messageDeliveries.GetEnumerator(); while (iter.MoveNext()) { MessageDelivery messageDelivery = iter.Current; if (messageDelivery.MessageDeliveryTime <= _now) { long delay = _strategy.messageDelay(messageDelivery.Message, messageDelivery.Server.Server.boundAt().ToString()); if (delay != NetworkLatencyStrategy_Fields.LOST) { messageDelivery.Server.process(messageDelivery.Message); } //JAVA TO C# CONVERTER TODO TASK: .NET enumerators are read-only: iter.remove(); } } // Check and trigger timeouts foreach (TestProtocolServer testServer in Participants.Values) { testServer.Tick(_now); } // Get all sent messages from all test servers IList <Message> messages = new List <Message>(); foreach (TestProtocolServer testServer in Participants.Values) { testServer.SendMessages(messages); } // Now send them and figure out latency foreach (Message message in messages) { string to = message.getHeader(Message.HEADER_TO); long delay = 0; if (message.getHeader(Message.HEADER_TO).Equals(message.getHeader(Message.HEADER_FROM))) { Log.debug("Sending message to itself; zero latency"); } else { delay = _strategy.messageDelay(message, to); } if (delay == NetworkLatencyStrategy_Fields.LOST) { Log.debug("Send message to " + to + " was lost"); } else { TestProtocolServer server = Participants[to]; Log.debug("Send to " + to + ": " + message); _messageDeliveries.Add(new MessageDelivery(_now + delay, message, server)); } } //JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET: //ORIGINAL LINE: java.util.Iterator<org.neo4j.helpers.collection.Pair<java.util.concurrent.Future<?>, Runnable>> waiters = futureWaiter.iterator(); IEnumerator <Pair <Future <object>, ThreadStart> > waiters = _futureWaiter.GetEnumerator(); while (waiters.MoveNext()) { //JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET: //ORIGINAL LINE: org.neo4j.helpers.collection.Pair<java.util.concurrent.Future<?>, Runnable> next = waiters.Current; Pair <Future <object>, ThreadStart> next = waiters.Current; if (next.First().Done) { next.Other().run(); //JAVA TO C# CONVERTER TODO TASK: .NET enumerators are read-only: waiters.remove(); } } return(_messageDeliveries.Count); }