public ClientViewModel(RaftClient raftClient)
     : base(raftClient)
 {
     Name            = raftClient.Id;
     State           = "Established";
     this.raftClient = raftClient;
     this.raftClient.Client.StateChanged += Client_StateChanged;
     ClientStateToView();
 }
示例#2
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
                });
            }
                );
        }