Пример #1
0
 void EndFightMessage_Reader(ReceivedMsg receivedMsg, EndFightMessage msg)
 {
     if (FightEnd != null)
     {
         FightEnd.Invoke(msg.WinnerKnifeIndex);
     }
 }
 private void WaitforData()
 {
     byte[] data = new byte[512];
     running = true;
     while (running)
     {
         try                                             // when the connection is forced close --> then here comes an exception (the connection. receive still wait for the data even though the client is not connected)
         {
             int    byteRead = connection.Receive(data); // save received data in the buffer
             string msg      = System.Text.Encoding.UTF8.GetString(data, 0, byteRead);
             if (msg.StartsWith("@quit"))
             {
                 Close();
             }
             else
             {
                 int split = msg.IndexOf(":");
                 Username = msg.Substring(0, split);
                 string msgText = msg.Substring(split + 1).Trim();
                 ReceivedMsg?.Invoke(this, msgText);
             }
         }
         catch (Exception)
         {
         }
     }
 }
Пример #3
0
        //---readers

        void StartFightMessage_Reader(ReceivedMsg receivedMsg, StartFightMessage msg)
        {
            if (FightStart != null)
            {
                FightStart.Invoke();
            }
        }
        //---readers

        void FightCteated_Reader(ReceivedMsg receivedMsg, FightCteatedMessage msg)
        {
            FightController fightController = new FightController(_client, msg.KnifeIndex);
            EnemyDef        enemyDef        = new EnemyDef(msg.EnemyUserName, msg.EnemyKnifeName, msg.EnemyKnifeMode);

            FigthCreated?.Invoke(this, fightController, enemyDef);
        }
Пример #5
0
        //---msg readers

        private void AuthenticationMsgReader(ReceivedMsg receivedMsg, AuthenticationMessage msg)
        {
            UserAuthenticationState autState;

            if (_authenticationStates.TryGetValue((IScsServerClient)receivedMsg.Sender, out autState))
            {
                autState.Step1_MsgReader(receivedMsg, msg);

                if (autState.State == UserAuthenticationState.AuthenticationState.Success)
                {
                    // Удаляем аутентификатор
                    _authenticationStates.Remove(autState.ScsClient);

                    //Сначала добавляем потом удаляем, чтобы не бьыло ни наносекунды, когда никто не слушает клиента
                    //_msgQueue.AddMessenger(autState.ScsClient);
                    //_msgQueueForAutentification.RemoveMessenger(autState.ScsClient);

                    _authenticatedUsers.Add(autState.ScsClient, autState.User);
                    autState.ScsClient.SendMessage(new AuthenticationSuccesMessage());


                    OnUserLogin?.Invoke(this, new UserEventArgs(autState.User));
                }
            }
            else
            {
                Console.WriteLine(GetType().Name + " :AuthenticationMsgReader error login=" + msg.login);
            }
        }
        // make object from json sent from watch
        void MakeObjectFromJson()
        {
            DataArrayModel dataArrayModel;

            // filter the received watch json empty 8888 to *
            string filterEmpty = ReceivedMsg.Replace("8888", "*");


            dataArrayModel = JsonConvert.DeserializeObject <DataArrayModel>(filterEmpty);

            // get workout name and reps then removes from DataArrayModel
            List <string> watchWorkoutTitle = dataArrayModel.DataArray[dataArrayModel.DataArray.Count - 1];

            dataArrayModel.DataArray.RemoveAt(dataArrayModel.DataArray.Count - 1);
            List <string> watchReps = dataArrayModel.DataArray[dataArrayModel.DataArray.Count - 1];

            dataArrayModel.DataArray.RemoveAt(dataArrayModel.DataArray.Count - 1);

            WatchModel watchModel = ConvertWatchJsonToWatchModel(watchWorkoutTitle, watchReps, dataArrayModel.DataArray);

            globalWatchModelHold = watchModel;
            ListViewWorkouts(watchModel);


            UploadButtonBool = true;
        }
Пример #7
0
 //---msg readers
 void OnTestMessage(ReceivedMsg receivedMsg, TestMessage msg)
 {
     if (msg._state == TestMessage.State.Step_SendMsg_And_GetResponse_FromAllClients_UsingConcurrentEventQueue_And_MsgReadersCollection_2)
     {
         ScsServiseTest.Step_SendMsg_And_GetResponse_FromAllClients_UsingConcurrentEventQueue_And_MsgReadersCollection.IncrimentCounter(GetUser(receivedMsg).Login);
     }
 }
Пример #8
0
 //---readers
 void UserThroKnife_Reader(ReceivedMsg receivedMsg, ThrowKnifeMessage msg)
 {
     if (_fight.CanThrow(_knifeIndex))
     {
         _fight.ThrowKnife(_knifeIndex, msg.Input);
     }
 }
        void Messenger_MessageReceived(object sender, MessageEventArgs e)
        {
            ReceivedMsg msg = new ReceivedMsg((IMessenger)sender, e.Message);

            lock (_lockObject)
            {
                _msgQueue.Enqueue(msg);
            }
        }
        public void Stem1_MsgReader(ReceivedMsg msg, AuthenticationSuccesMessage authenticationMessage)
        {
            if (State == AuthenticationState.Processing)
            {
                State = AuthenticationState.Success;
            }

            Stop();
        }
Пример #11
0
        public void UpdateRoom(string strMsgId, string strSenderSid, string strMsgSid, IList <string> arActiveMemberSids, string strSid, int nUnReadMsgCount,
                               ContentType contentType, string strContent, long lLastMsgDate, string strThumbnailPath)
        {
            var FindedRoom = this.m_Rooms.FirstOrDefault(r => r.Sid == strSid);

            if (null != FindedRoom)
            {
                var RoomCollection = ConnectionHelper.DB.GetCollection <RoomEntity>("RoomEntity");
                var FindRoomQuery  = Query <RoomEntity> .EQ(r => r.Sid, strSid);

                RoomEntity FindedRoomEntity = RoomCollection.FindOne(FindRoomQuery);

                if (null != FindedRoomEntity)
                {
                    int nNewUnReadMsgCount = (FindedRoom.UnReadMsgCount + nUnReadMsgCount);

                    Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Send, new ThreadStart(() =>
                    {
                        FindedRoom.UnReadMsgCount = nNewUnReadMsgCount;
                        FindedRoom.LastMsgSummary = strContent;
                        FindedRoom.LastMsgDate    = lLastMsgDate;
                        FindedRoom.ThumbnailPath  = strThumbnailPath;
                    }));

                    var UpdateRoomQuery = Update <RoomEntity>
                                          .Set(r => r.ActiveMemberSids, arActiveMemberSids)
                                          .Set(r => r.UnReadMsgCount, nNewUnReadMsgCount)
                                          .Set(r => r.LastMsgSummary, strContent)
                                          .Set(r => r.LastMsgDate, lLastMsgDate)
                                          .Set(r => r.ThumbnailPath, strThumbnailPath);

                    RoomCollection.Update(FindRoomQuery, UpdateRoomQuery);

                    if (true == this.m_ChattingRoomsDictionary.DoesExist(strSid))
                    {
                        var FindedChattingRoom = this.m_ChattingRoomsDictionary.GetValue(strSid);

                        if (null != FindedChattingRoom)
                        {
                            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Send, new ThreadStart(() =>
                            {
                                bool bIsActivatedView = FindedChattingRoom.IsActiveChattingShellView();
                                ReceivedMsg rcvMsg    = new ReceivedMsg(strMsgId, strSenderSid, strSid, strMsgSid, contentType, strContent,
                                                                        lLastMsgDate, 0, strThumbnailPath, bIsActivatedView);
                                FindedChattingRoom.ChattingViewModel.ReceiveChatMsgCommand.Execute(rcvMsg);

                                if (true == bIsActivatedView)
                                {
                                    this.ResetUnReadCountForRoom(strSid);
                                }
                            }));
                        }
                    }
                }
            }
        }
Пример #12
0
        void Messenger_MessageReceived(object sender, MessageEventArgs e)
        {
            ReceivedMsg msg = new ReceivedMsg((IMessenger)sender, e.Message);

            Entry entry = new Entry()
            {
                msg = msg,
            };

            _entryQueue.Enqueue(entry);
            Console.WriteLine(GetType().Name + " :Enqueue Mgg " + e.Message.GetType().Name);
        }
Пример #13
0
        void UserReadyToFight_Reader(ReceivedMsg receivedMsg, ReadyToFightMessage msg)
        {
            if (_waitForReady)
            {
                _waitForReady = false;

                if (_fight.WaitForReady)
                {
                    _fight.SetOneKnifeReady(_knifeIndex);
                }
            }
        }
        static public isaCommand OnMsgReceived(isaCommand cmd)
        {
            isaCommand retcmd = new Command {
                command = cmd.command
            };

            //this routes back out to the client callback
            if (ReceivedMsg != null)
            {
                retcmd = (isaCommand)ReceivedMsg?.Invoke(cmd);
            }
            return(retcmd);
        }
Пример #15
0
        void ThrowKnifeMessage_Reader(ReceivedMsg receivedMsg, ThrowKnifeMessage msg)
        {
            KnifeThrowEventArg arg = new KnifeThrowEventArg(
                msg.KnifeId,
                msg.Input,
                msg.TimeNextThrow,
                msg.TimeThrow);

            if (KnifeThrow != null)
            {
                KnifeThrow.Invoke(arg);
            }
        }
Пример #16
0
        private void TestMetgod(ReceivedMsg receivedMsg, TestMessage msg)
        {
            Console.WriteLine("TestMetgod");

            if (msg._state == TestMessage.State.Step_SendMsg_And_GetResponse_FromAllClients_UsingConcurrentEventQueue_And_MsgReadersCollection_1)
            {
                receivedMsg.Sender.SendMessage(new TestMessage(
                                                   TestMessage.State.Step_SendMsg_And_GetResponse_FromAllClients_UsingConcurrentEventQueue_And_MsgReadersCollection_2
                                                   , "test msg"
                                                   ));
            }

            Disconnect();
        }
Пример #17
0
        //--- msg readers
        private void AuthenticationSuccessMsgReader(ReceivedMsg receivedMsg, AuthenticationSuccesMessage msg)
        {
            _authenticationState.Stem1_MsgReader(receivedMsg, msg);

            if (_authenticationState.State == UserAuthenticationState.AuthenticationState.Success)
            {
                _authenticationState = null;
                IsConnected          = true;

                if (OnUserLogin != null)
                {
                    OnUserLogin();
                }
            }
        }
        public void Step1_MsgReader(ReceivedMsg receivedMsg, AuthenticationMessage authenticationMessage)
        {
            if (receivedMsg.Sender == ScsClient)
            {
                Console.WriteLine(GetType().Name + " :Get AuthenticationMessage " + authenticationMessage.login);
                if (State == AuthenticationState.Processing)
                {
                    User  = new User(authenticationMessage.login, ScsClient);
                    State = AuthenticationState.Success;

                    //Console.WriteLine("Authentication Success login=" + authenticationMessage.login);
                }

                Stop();
            }
        }
Пример #19
0
        void ReceiveAction(IAsyncResult ar)
        {
            int size = 0;

            try
            {
                size = server.EndReceive(ar);
            }
            catch
            {
                if (Disconnected != null)
                {
                    Disconnected.Invoke(server);
                }
                server.Close();
                return;
            }

            if (size == 0)
            {
                if (Disconnected != null)
                {
                    Disconnected.Invoke(server);
                }
                server.Close();
            }
            else
            {
                if (ReceivedMsg != null)
                {
                    ReceivedMsg.Invoke(Server, buffer, size);
                }

                try
                {
                    server.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveAction), null);
                }
                catch
                {
                    if (Disconnected != null)
                    {
                        Disconnected.Invoke(server);
                    }
                }
            }
        }
Пример #20
0
 private void E_ReceivedMsg(object sender, string e)
 {
     if (e.StartsWith("@quit"))
     {
         var client = sender as ClientHandler;
         ConnectedUsers.Remove(client.Username); // remove username
     }
     else
     {
         App.Current.Dispatcher.Invoke(() =>
         {
             var client = sender as ClientHandler;
             ReceivedMsg.Add(client.Username + ":" + e);
             RaisePropertyChanged(nameof(CountMsg));
             if (!ConnectedUsers.Contains(client.Username))
             {
                 ConnectedUsers.Add(client.Username);
             }
         });
     }
 }
Пример #21
0
        private void ExecuteReceiveChatMsgCommand(ReceivedMsg rcvMsg)
        {
            var MessageCollection = ConnectionHelper.DB.GetCollection <MessageEntity>("MessageEntity");
            var FindMessageQuery  = Query <MessageEntity> .EQ(m => m.Id, new ObjectId(rcvMsg.Id));

            var FindedMessage = MessageCollection.FindOne(FindMessageQuery);

            var UserCollection = ConnectionHelper.DB.GetCollection <UserEntity>("UserEntity");
            var FindUserQuery  = Query <UserEntity> .EQ(u => u.Sid, rcvMsg.SenderSid);

            var FindedUser = UserCollection.FindOne(FindUserQuery);

            if (null != FindedUser && null != FindedMessage)
            {
                string strFindedUserSid = FindedUser.Sid;

                if (string.IsNullOrEmpty(rcvMsg.ThumbnailPath))
                {
                    if (false == this.m_AnonymousThumbnailDictionary.ContainsKey(strFindedUserSid))
                    {
                        this.m_AnonymousThumbnailDictionary.Add(strFindedUserSid, ColorGenerator.Instance.GetRandomBrush());
                    }
                }

                var RcvMessage = new OpponentMsg(rcvMsg.Id, rcvMsg.Sid, rcvMsg.RoomSid, rcvMsg.Content, rcvMsg.ContentType,
                                                 rcvMsg.SendTime, MsgStatus.Received, rcvMsg.ReadMembersCount, FindedUser.NickName, rcvMsg.ThumbnailPath,
                                                 this.m_AnonymousThumbnailDictionary[strFindedUserSid]);

                this.Messages.Add(RcvMessage);
                this.EndReceiveMsgCommand(RcvMessage);

                var WillAddUnReadMsg = new UnReadMsg(FindedMessage.Id, FindedMessage.ReadMembers, rcvMsg.Sid, rcvMsg.RoomSid, AuthRepository.MQKeyInfo.UserSid);
                this.m_UnReadMessages.Add(WillAddUnReadMsg);

                if (true == rcvMsg.IsActivatedView)
                {
                    this.RequestReadMsgs();
                }
            }
        }
Пример #22
0
 /// <summary>
 /// 接受操作
 /// </summary>
 /// <param name="ar">Sokcet连接异步结果</param>
 private void ReceiveAction()
 {
     try
     {
         while (true)
         {
             byte[] vs = new byte[8];
             server.Receive(vs);
             BinaryReader br   = new BinaryReader(new MemoryStream(vs));
             int          head = br.ReadInt32();
             int          len  = br.ReadInt32();
             br.Dispose();
             if (head == 0x544F4332)
             {
                 byte[] vs1 = new byte[0];
                 Array.Resize(ref vs1, len);
                 server.Receive(vs1);
                 try //控制异常范围
                 {
                     ReceivedMsg.Invoke(this, server, vs1, len);
                 }
                 catch
                 {
                 }
             }
             else
             {
                 throw new Exception(); //抛出异常实现什么都不做
             }
         }
     }
     catch
     {
         Disconnected.Invoke(this, server);
         server.Dispose();
     }
 }
Пример #23
0
 public void WaitToRecieveData()
 {
     byte[] data = new byte[512];
     running = true;
     while (running)
     {
         try
         {
             int    byteRead = connection.Receive(data);
             string msg      = System.Text.Encoding.UTF8.GetString(data, 0, byteRead);
             if (msg.StartsWith("@quit"))
             {
                 Disconnect();
             }
             else
             {
                 ReceivedMsg?.Invoke(this, msg);
             }
         }
         catch (Exception)
         {
         }
     }
 }
Пример #24
0
 int GetUserIndex(ReceivedMsg msg)
 {
     return(ScsServiseTest.GetUserIndexFromLogin(GetUser(msg).Login));
 }
Пример #25
0
 //---Users
 User GetUser(ReceivedMsg msg)
 {
     return(_users[msg.Sender]);
 }
Пример #26
0
        //---msg readrs

        void FightQueueMessage_Reader(ReceivedMsg receivedMsg, FightQueueMessage msg)
        {
            // TODO проверку чтобы 2 раза в очередь нельзя было вставать
            UserFightQueue.Entry entry = new UserFightQueue.Entry(_controllersFactory, msg.KnifeName, msg.KnifeMode);
            _userFightQueue.Enqueue(entry);
        }
Пример #27
0
 private void OnSessionReceived(HcToolInfo info, Command cmd, int addr, int[] values)
 {
     ReceivedMsg?.Invoke(info, cmd, addr, values);
 }
Пример #28
0
 private void ClearMsg(object sender, RoutedEventArgs e)
 {
     ReceivedMsg.Clear();
 }
Пример #29
0
        //private void AppendTextBox(string appendix)
        //{
        //    if (ReceivedMsg.Text.Trim().Length <= 0)
        //    {
        //        ReceivedMsg.AppendText(DateTime.Now.ToString("hh:mm:ss") + " : " + appendix);
        //        ReceivedMsg.ScrollToEnd();
        //    }
        //    else
        //    {
        //        ReceivedMsg.AppendText("\n" + DateTime.Now.ToString("hh:mm:ss") + " : " + appendix);
        //        ReceivedMsg.ScrollToEnd();
        //    }
        //}

        private void AppendTextBox(string appendix)
        {
            ReceivedMsg.AppendText(appendix);
            ReceivedMsg.ScrollToEnd();
        }