public void StockRequest(string sym) { StockRequestData tempData = new StockRequestData(sym); Event e = new Event(Event.EventTypeEnum.ClientStockRequest, tempData); networkHandler.SendMessage(e); }
static void Main(string[] args) { try { //WriteMsg("DataCollector 시작합니다.", LogType.INFORMATION); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " : DataCollector 시작합니다"); if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday) { return; } //Request 타입 호출 //Console.WriteLine("Request 타입 호출"); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " : Request 타입 호출"); StockRequestData sqd = new StockRequestData { dbConnString = dbConnString, LogDir = LogDir, sDate = sDateTime, eDate = eDateTime, StockCodes = StockCodes }; RequestStockRunner rsr = new RequestStockRunner(sqd); Thread t = new Thread(rsr.RequestStockData); t.Start(); //WriteMsg("StocksRequest 에게 수집을 요청했습니다.", LogType.INFORMATION); // Subscribe 타입 호출 //Console.WriteLine("Subscribe 타입 호출"); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " : Subscribe 타입 호출"); SubscribeStocksRunner ssr = new SubscribeStocksRunner(dbConnString, LogDir, sDateTime, eDateTime, StockCodes); ssr.Subscribe(); while (true) { //if (DateTime.Now.Minute == 0) //{ // UpdateRemainSubscribe(); //} //if (DateTime.Now.Hour == 16 && DateTime.Now.Minute == 20) //{ // ssr.UnSubscribe(); // rsr.selfKill = true; // t.Join(1000 * 60 * 5); // break; //} Thread.Sleep(1000 * 60); } } catch (Exception ex) { EventLog.WriteEntry("DataCollector", ex.ToString()); //WriteMsg(ex.ToString(), LogType.ERROR); } }
public void HandleMessage(ServerResponse sender, Event e) { Event.EventTypeEnum enumType = e.EventType; Account acc = new Account("NULL", "NULL"); switch (enumType) { case Event.EventTypeEnum.CreateAccount: //Check list of all accounts and make sure the username isn't taken. If not, send new account LoginEventData createAccData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString()); bool canCreate = true; if (accountList == null) { accountList = new List <Account>(); } for (int i = 0; i < accountList.Count && canCreate; i++) { string s = accountList.ElementAt(i).Username; if (s == createAccData.Username) { canCreate = false; } } if (canCreate) { acc = new Account(createAccData.Username, createAccData.Password); acc.IsOnline = true; accountList.Add(acc); updateActivityList("New user created: " + createAccData.Username); updateUserList(accountList); //Send success response //sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseSuccess, null)); //Send account data sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerSendAccount, new AccountData(acc))); } else { updateActivityList("User attempted to create an account with the same username as one that exists."); sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseError, new ServerErrorData("Account already exists. Try again."))); } break; case Event.EventTypeEnum.LoginAttempt: //Find if the username exits. If so, make sure the password is correct. Send account data bool found = false; LoginEventData loginData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString()); for (int i = 0; i < accountList.Count && !found; i++) { string u = accountList.ElementAt(i).Username; if (u == loginData.Username) { found = true; acc = accountList.ElementAt(i); } } if (loginData.Password == acc.Password) { //Successful login attempt updateActivityList("User " + loginData.Username + " has logged in"); acc.IsOnline = true; updateUserList(accountList); sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerSendAccount, new AccountData(acc))); } else { //Unsuccessful login attempt updateActivityList("User " + loginData.Username + " made bad login attempt"); sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseError, new ServerErrorData("We couldn't find that username/password combo. Try again."))); } break; case Event.EventTypeEnum.UserLogOff: LoginEventData logOffData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString()); foreach (Account a in accountList) { if (a.Username == logOffData.Username) { updateActivityList(a.Username + " has logged off"); a.IsOnline = false; updateUserList(accountList); break; } } break; case Event.EventTypeEnum.ClientStockRequest: StockRequestData reqData = JsonConvert.DeserializeObject <StockRequestData>(e.EventData.ToString()); string reqSymbol = reqData.StockSymbol.ToUpper(); bool inStockList = false; Stock reqStockToSend = new Stock("NULL"); for (int i = 0; i < stockList.Count; i++) { string tStock = stockList.ElementAt(i).TickerSymbol; if (tStock == reqSymbol) { inStockList = true; stockList.ElementAt(i).UpdateStock(); reqStockToSend = stockList.ElementAt(i); break; } } if (!inStockList) { Stock tStock = new Stock(reqSymbol); reqStockToSend = tStock; stockList.Add(tStock); } StockData sd = new StockData(reqStockToSend); Event reqEventToSend = new Event(Event.EventTypeEnum.ServerSendStock, sd); sender.SendResponseToClient(reqEventToSend); updateStockList(stockList); break; case Event.EventTypeEnum.NULLEVENTENUM: updateActivityList("Null event received in ServerHandler.HandleMessage()"); break; } }