Exemple #1
0
        public AppViewModel(IWindowManager wm)
        {
            WorldSettings      = new SimulationSettings(); // TODO load from xml
            raftWorldModel     = new RaftSoundPlayer(WorldSettings);
            CommunicationModel = new InProcNetwork()
            {
                ConnectionEstablishLatency = 500,
                ConnectionDefaultLatency   = 100,
                ConnectionCloseLatency     = 400
            };
            RaftDiagramDefinition diagramDefinition = new RaftDiagramDefinition(raftWorldModel, CommunicationModel, WorldSettings);

            Diagram1    = new DiagramViewModel(diagramDefinition);
            modelLoader = new DiagramXmlSerializer(Diagram1);

            RightPanel = new SimulationSettingsViewModel(this, WorldSettings);
        }
Exemple #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
                });
            }
                );
        }