Ejemplo n.º 1
0
        public void StockRequest(string sym)
        {
            StockRequestData tempData = new StockRequestData(sym);
            Event            e        = new Event(Event.EventTypeEnum.ClientStockRequest, tempData);

            networkHandler.SendMessage(e);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }