public void HandleRequest(object insock) { Socket s = (Socket)insock; byte[] buffer; int readBytes; buffer = new byte[s.SendBufferSize]; readBytes = s.Receive(buffer); if (readBytes > 0) // assume all is read at once { string messageString = Encoding.ASCII.GetString(buffer); //Console.WriteLine("Thread: {0}, ListenerInfo: LEP: {1}, REP: {2}", Thread.CurrentThread.ManagedThreadId, listener.LocalEndPoint, listener.RemoteEndPoint); Console.WriteLine("Thread: {0}, LEP: {1}, REP: {2}", Thread.CurrentThread.ManagedThreadId, s.LocalEndPoint, s.RemoteEndPoint); Message tempMessage = MessageProject.Message.xmlIntoMessage(messageString); Type typer = tempMessage.GetType(); dynamic newMessage = Convert.ChangeType(tempMessage, typer); Console.WriteLine(newMessage.GetType().ToString()); RegisterGame mes = (RegisterGame)newMessage; Console.WriteLine("GameID: {0}, PlayersBlue: {1}, PlayersRed: {2}", mes.gameID, mes.blueTeamPlayers.ToString(), mes.redTeamPlayers.ToString()); ConfirmGameRegistration gameConfirmation = new ConfirmGameRegistration(mes.gameID); string respStr = MessageProject.Message.messageIntoXML(gameConfirmation); Console.WriteLine("Response type: {0}", gameConfirmation.GetType()); byte[] response = Encoding.ASCII.GetBytes(respStr); s.Send(response); } Thread.Sleep(10000); }
public static void HandleMessage(RegisterGame request, CommunicationServer server, Socket handler) { if (request == null) { return; } Game.Game g; lock (joinLock) { g = new Game.Game(gameId: server.RegisteredGames.NextGameId(), name: request.NewGameInfo.gameName, bluePlayers: request.NewGameInfo.blueTeamPlayers, redPlayers: request.NewGameInfo.redTeamPlayers, gameMaster: handler ); try { server.RegisteredGames.RegisterGame(g); } catch { return; } } ConfirmGameRegistration gameRegistration = new ConfirmGameRegistration() { gameId = (ulong)g.Id }; var response = XmlMessageConverter.ToXml(gameRegistration); server.ConnectionEndpoint.SendFromServer(handler, response); }
public void ConfirmGameRegistrationTest() { ConfirmGameRegistration confirmGameRegistration = new ConfirmGameRegistration(); confirmGameRegistration.gameId = 4; string xml = XmlMessageConverter.ToXml(confirmGameRegistration); ConfirmGameRegistration result = (ConfirmGameRegistration)XmlMessageConverter.ToObject(xml); Assert.AreEqual((ulong)4, result.gameId); }
public void HandleMessage_ConfirmGameRegistration_NewGameId() { GameMaster.Net.Game game = new GameMaster.Net.Game(); var gm = newGameMaster(game); var message = new ConfirmGameRegistration { gameId = 4 }; gm.MessageHandler.HandleMessage(message, new Socket(new SocketType(), new ProtocolType())); Assert.AreEqual((ulong)4, game.gameId); }
public void HandleMessage(ConfirmGameRegistration message, Socket handler) { ConsoleDebug.Good("I get gameId = " + message.gameId); gameId = message.gameId; }
public static void DataManager(string xml, ClientData client) { Message temp = Message.xmlIntoMessage(xml); dynamic msg = Convert.ChangeType(temp, temp.GetType()); switch (typeDict[msg.GetType()]) { case 0: break; case 1: foreach (ClientData c in clients) { if (c.id == msg.playerID) { string confirmJoining = Message.messageIntoXML(msg); byte[] sendConfirmJoining = Encoding.ASCII.GetBytes(confirmJoining); c.clientSocket.Send(sendConfirmJoining); } } break; case 2: foreach (ClientData c in clients) { if (c.id == msg.playerID) { string reject = Message.messageIntoXML(msg); byte[] sendReject = Encoding.ASCII.GetBytes(reject); c.clientSocket.Send(sendReject); } } break; case 3: client.id = counter; msg.playerID = counter; counter++; string join = Message.messageIntoXML(msg); byte[] sendJoin = Encoding.ASCII.GetBytes(join); try { gmSocket.Send(sendJoin); } catch (Exception e) { Console.Write(e); } break; case 4: string game = Message.messageIntoXML(msg); byte[] sendGame = Encoding.ASCII.GetBytes(game); Console.WriteLine(); foreach (ClientData c in clients) { if (c.id == msg.playerID) { Console.WriteLine("Received GameMessage! Sending to playerID: {0}", msg.playerID); c.clientSocket.Send(sendGame); } } break; case 5: GameInfo info = new GameInfo(msg.gameID, msg.blueTeamPlayers, msg.redTeamPlayers); gameList.Add(info); int id = msg.gameID; gmID = counter; client.id = counter; gmSocket = client.clientSocket; counter++; ConfirmGameRegistration confirmation = new ConfirmGameRegistration(id); string conf = Message.messageIntoXML(confirmation); byte[] toSend = Encoding.ASCII.GetBytes(conf); client.clientSocket.Send(toSend); break; case 6: RegisteredGames registered = new RegisteredGames(gameList); string registeredSend = Message.messageIntoXML(registered); byte[] registeredToSend = Encoding.ASCII.GetBytes(registeredSend); client.clientSocket.Send(registeredToSend); break; case 8: string move = Message.messageIntoXML(msg); byte[] sendMove = Encoding.ASCII.GetBytes(move); try { gmSocket.Send(sendMove); } catch (Exception e) { Console.Write(e); } break; case 9: Console.WriteLine("Response from GM"); foreach (ClientData c in clients) { if (c.id == msg.playerID) { string movementResponse = Message.messageIntoXML(msg); byte[] sendmovementResponse = Encoding.ASCII.GetBytes(movementResponse); c.clientSocket.Send(sendmovementResponse); } } break; default: Console.Write("dostalem cos"); byte[] sendEmpty = Encoding.ASCII.GetBytes(""); client.clientSocket.Send(sendEmpty); break; } }