示例#1
0
 public RaftHost(INetworkModel networkModel, IRaftEventListener raftEventListener, IRaftNodeSettings raftSettings, string Id) :
     base(networkModel)
 {
     this.Id = Id;
     if (Id == null)
     {
         throw new ArgumentException("Id");
     }
     Raft   = new RaftNode <string>(raftEventListener, raftSettings, Id);
     Server = networkModel.CreateServer(Id, startListening: false);
 }
示例#2
0
        public RaftNode(IRaftEventListener raftEventListener, IRaftNodeSettings raftSettings, string id)
        {
            if (raftEventListener == null)
            {
                throw new ArgumentNullException("raftWorld");
            }
            if (id == null)
            {
                throw new ArgumentException("id");
            }
            this.Id = id;

            RaftEventListener = raftEventListener;
            RaftSettings      = raftSettings;
            PersistedState    = new PersistedState <T>();
        }
示例#3
0
        public RaftDiagramDefinition(RaftSoundPlayer raftEventListener, INetworkModel networkModel, SimulationSettings worldSettings)
        {
            this.raftEventListener  = raftEventListener;
            this.simulationSettings = worldSettings;

            // brokers
            AddModelFor <BrokerViewModel, DiagramNodeBroker>(
                "Broker",
                (p) => new BrokerViewModel(string.Format("Br{0}", brokerNo++))
            {
                Location = p
            },
                (vm) => new DiagramNodeBroker()
            {
                Location = vm.Location, Name = vm.Name
            },
                (m) => new BrokerViewModel(m.Name)
            {
                Location = m.Location
            }
                );

            // clients
            AddModelFor <ClientViewModel, DiagramNodeClient>(
                "NetworkClient",
                (p) =>
            {
                string cliendId       = (clientNo++).ToString();
                RaftClient raftClient = new RaftClient(networkModel, cliendId);
                return(new ClientViewModel(raftClient)
                {
                    Location = p
                });
            },
                (vm) => new DiagramNodeClient()
            {
                Location = vm.Location, Name = vm.Name
            },
                (m) =>
            {
                RaftClient raftClient = new RaftClient(networkModel, m.Name);
                return(new ClientViewModel(raftClient)
                {
                    Location = m.Location
                });
            }
                );

            // servers
            AddModelFor <ServerViewModel, DiagramNodeServer>(
                "Server",
                (p) =>
            {
                serverNo++;
                string raftNodeId       = serverNo.ToString();
                RaftHost serverSoftware = new RaftHost(networkModel, raftEventListener, simulationSettings, raftNodeId);
                //this looks nasty
                return(new ServerViewModel(serverSoftware)
                {
                    Location = p
                });
            },
                (vm) => new DiagramNodeServer()
            {
                Location = vm.Location, Name = vm.Name
            },
                (m) =>
            {
                RaftHost serverSoftware = new RaftHost(networkModel, raftEventListener, simulationSettings, m.Name);
                return(new ServerViewModel(serverSoftware)
                {
                    Location = m.Location
                });
            }
                );
        }