예제 #1
0
        public void DefaultScenarioSameThreadTest()
        {
            SimulationServer.Start("AntMeTest", SimulationServer.DEFAULTPORT);

            byte[]     file   = File.ReadAllBytes(@".\AntMe.Levelpack.dll");
            LoaderInfo loader = AntMe.Runtime.ExtensionLoader.SecureAnalyseExtension(file, true, true);

            loader.Levels[0].Type.AssemblyFile  = file;
            loader.Players[0].Type.AssemblyFile = file;
            int lastRound = -1;

            // Client 1
            ISimulationClient client1 = SimulationClient.CreateNamedPipe("AntMeTest");

            client1.OnLevelChanged += (c, l) =>
            {
                if (l != null)
                {
                    Task t = new Task(() =>
                    {
                        c.UploadPlayer(loader.Players[0].Type);
                        c.SetPlayerState(0, PlayerColor.Green, 0, true);
                    });
                    t.Start();
                }
            };
            client1.Open("Client 1");

            // Client 2
            ISimulationClient client2 = SimulationClient.CreateNamedPipe("AntMeTest");

            client2.OnPlayerChanged += (c, s) =>
            {
                var slot = c.Slots[s];
                if (slot.ReadyState && slot.PlayerInfo)
                {
                    Task t = new Task(() => { c.StartSimulation(); });
                    t.Start();
                }
            };
            client2.OnSimulationState += (c, s) =>
            {
                lastRound = s.Round;
            };
            client2.Open("Client 2");
            client2.AquireMaster();
            client2.UploadLevel(loader.Levels[0].Type);

            Thread.Sleep(10000);
            Assert.IsTrue(lastRound > 0);

            SimulationServer.Stop();
        }
        private void StartServer()
        {
            SimulationServerImpl simulationServerImpl = new SimulationServerImpl();

            simulationServerImpl.agentDict      = ListToDict(m_AgentList);
            simulationServerImpl.screenStreamer = screenStreamer;

            server = new Server
            {
                Services = { SimulationServer.BindService(simulationServerImpl) },
                Ports    = { new ServerPort("localhost", port, ServerCredentials.Insecure) }
            };
            server.Start();
            Debug.Log("Server started");
        }
예제 #3
0
파일: Network.cs 프로젝트: ageazrael/RPC
        public INetworkServer GetOrCreateServer(string ip, uint port)
        {
            var rServerKey = ip + port.ToString();

            if (!this.Servers.TryGetValue(rServerKey, out SimulationServer rServer))
            {
                rServer = new SimulationServer()
                {
                    Network = this, IP = ip, Port = port
                };
                this.Servers.Add(rServerKey, rServer);
            }

            return(rServer);
        }
예제 #4
0
파일: Program.cs 프로젝트: 20chan/tart
        static void Main(string[] args)
        {
            var simul    = new SimulationServer(typeof(ExampleGame));
            var frontend = new FrontEndServer("FrontEnd", "index.html");

            var server = new RouteServer <SimulationServer>(simul);

            server.AppendRoutes(frontend);
            var waiter = new ManualResetEvent(false);

            Console.CancelKeyPress += (o, e) => {
                e.Cancel = true;
                waiter.Set();
            };

            server.StartAsync();
            Console.WriteLine("tart started.. press ctrl+c to stop");

            waiter.WaitOne();
            server.Stop();
        }