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); }
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 }); } ); }