public void Service_ClientConnected(IFlowClient client) { //지금은 Channel 0으로 무조건 밀어 넣는 형식 //채널 1개당 1스레드로 1스레드가 적정 양까지 버틸경우 1채널로 가도 됨 //그럴 경우 이 서비스 매니저도 필요 없을 듯 if (game != null && game.Length != 0) { game[0].AddPlayer(client); } else { ConsoleController.Alert("There is no game service", "Service Manager"); } }
/// <summary> /// 콘솔 메시지에 따른 처리 정의 /// </summary> /// <param name="message">메시지 원본</param> /// <param name="convertedArgs">요소별로 나눈 메시지 원본</param> private void ConsoleController_Broadcast(string message, string[] convertedArgs) { Console.WriteLine("Broadcast : " + convertedArgs[0]); try { if (convertedArgs[0].Equals("disconnect")) { FlowClient _target = null; foreach (FlowClient client in clients) { if (convertedArgs[1].Equals(client.ToString())) { _target = client; } } if (_target == null) { ConsoleController.Alert(convertedArgs[0] + " 대상이 잘못되었습니다."); } else { DisconnectClient(_target); } } else if (convertedArgs[0].Equals("send")) { foreach (FlowClient client in clients) { if (convertedArgs[1].Equals(client.ToString())) { ConsoleController.Debug("Sending(" + client + ") : " + convertedArgs[2]); client.SendMessage(convertedArgs[2]); } } } } catch (IndexOutOfRangeException) { ConsoleController.Alert(convertedArgs[0] + " 명령어 인수가 부족합니다."); } }