public void ShowMessageWindow(string label, string message, MessageEnums enumMessage) { messageSender.Label = label; messageSender.Message = message; messageSender.EnumCount = (int)enumMessage; messageSender.CloseWindow += CloseMessageWindow; container.RegisterInstance <IMessageSender>(messageSender); messageWindow = container.Resolve <MessageWindow>(); messageWindow.ShowDialog(); }
// main logic for processing messages received from client utilizing MessageEnums protected MessageEnums ProcessLine(string line) { string[] splitLine = line.Split(' '); if (splitLine.Length <= 0 || !Message.IsMessageEnum(splitLine[0])) { SendMessage(Message.error($"Incorrect message protocol '{line}'")); return(ERROR); } try { MessageEnums responseType = Message.GetMessageEnumFromString(splitLine[0]); switch (responseType) { case TRADER_NEW: InitNewTrader(); return(TRADER_NEW); case TRADER_RECONNECTING: if (!Program.IsRestarting) { throw new ServerNotRestartingException("Server is not restarting"); } InitNewTrader(splitLine[1]); return(TRADER_RECONNECTING); case TRADER_TRADE: if (_trader == null) { throw new Exception("Trader Uninitialized"); } if (Program.IsRestarting) { throw new Exception("Cannot trade whilst server is recovering"); } return(TradeStock(splitLine[1])); default: SendMessage(Message.error($"Invalid request '{line}'")); return(ERROR); } } catch (IndexOutOfRangeException e) { SendMessage(Message.error($"Inavlid request '{line}' unexpected number of arguments")); return(ERROR); } catch (ServerNotRestartingException e) { SendMessage(Message.error($"{e.Message}")); return(ERROR); } }
// main logic for processing a message from the server utilizes MessageEnums public MessageEnums ProcessLine(string line) { string[] splitLine = line.Split(" "); if (!(splitLine.Length > 0) || !(Message.IsMessageEnum(splitLine[0]))) { return(MessageEnums.ERROR); } try { MessageEnums messageType = Message.GetMessageEnumFromString(splitLine[0]); switch (messageType) { case CONNECT_SUCC: { SendMessage(Message.newTraderBroadcast()); return(CONNECT_SUCC); } case SERVER_REBOOT: { if (_trader == null) { SendMessage(Message.newTraderBroadcast()); } else { SendMessage(Message.traderReconnectingBroadcast(_trader.ID)); } market.AddUIMessage(Message.serverRebookUI()); _serverReconnecting = true; return(SERVER_REBOOT); } case SERVER_RESTORED: { market.AddUIMessage(Message.serverRecoveredUI()); _serverReconnecting = false; return(SERVER_RESTORED); } case TRADER_ID: { InitTrader(splitLine[1]); Console.WriteLine($"Your ID is {_trader.ID}"); market.AddUIMessage($"Your ID is {_trader.ID}"); return(TRADER_ID); } case TRADER_LIST: { InitTraderList(splitLine); return(TRADER_LIST); } case TRADER_WITH_STOCK: { Program.Market.StockHolder = new Trader(splitLine[1]); Program.Market.PrintTraders(); return(TRADER_WITH_STOCK); } case TRADER_JOINED: { Program.Market.AddTrader(new Trader(splitLine[1])); if (Trader != null && !Equals(Trader.ID, splitLine[1])) { Console.WriteLine(Message.traderJoinedUI(splitLine[1])); Program.Market.AddUIMessage(Message.traderJoinedUI(splitLine[1])); Program.Market.PrintTraders(); } return(TRADER_JOINED); } case TRADER_LEFT: { Program.Market.RemoveTrader(new Trader(splitLine[1])); Console.WriteLine(Message.traderLeftUI(splitLine[1])); Program.Market.AddUIMessage(Message.traderLeftUI(splitLine[1])); Program.Market.PrintTraders(); return(TRADER_LEFT); } case TRADE_SUCC: { Program.Market.StockHolder = new Trader(splitLine[2]); Console.WriteLine(Message.tradeUI(splitLine[1], splitLine[2])); Program.Market.AddUIMessage(Message.tradeUI(splitLine[1], splitLine[2])); return(TRADER_TRADE); } case TRADER_ACQ_STOCK: { Program.Market.StockHolder = new Trader(splitLine[1]); Console.WriteLine(Message.traderAcqUI(splitLine[1])); Program.Market.AddUIMessage(Message.traderAcqUI(splitLine[1])); return(TRADER_ACQ_STOCK); } default: { throw new IndexOutOfRangeException(); } } } catch (IndexOutOfRangeException e) { Program.Market.AddUIMessage(Message.error($"Incorrect command '{line}'")); return(MessageEnums.ERROR); } }