Beispiel #1
0
        public void HandleData()
        {
            if (_messageBuffer.Length == 0)
            {
                _messageBuffer = Buffer;
            }
            else
            {
                byte[] newBuffer = _messageBuffer.Add(Buffer);
                _messageBuffer = newBuffer;
            }

            _networkMessage = new NetworkMessage(_messageBuffer);

            do
            {
                AData receivedData = _networkMessage.GetPayloadData;
                DataHandler.Instance.HandleData(receivedData, NetSocket);

                byte[] newBuffer = _messageBuffer.SubArray((int)_networkMessage.Size, _messageBuffer.Length - ((int)_networkMessage.Size));
                _messageBuffer = newBuffer;

                _networkMessage = new NetworkMessage(_messageBuffer);
            }while (ReadCurrentBuffer);

            Buffer = new byte[BUFFER_SIZE];
        }
Beispiel #2
0
        private void HandleChatMessageData(AData receivedData, Socket socket)
        {
            ChatMessageData chatMessage = (ChatMessageData)receivedData;

            ChatChannel channelToMessage;

            if (!_channelList.ContainsKey(chatMessage.Channel))
            {
                Console.WriteLine("[Server] Cannot log message for channel {0}. Channel does not exist.", chatMessage.Channel);
                return;
            }
            else
            {
                channelToMessage = _channelList[chatMessage.Channel];
            }

            Message message = new Message(channelToMessage, GetUserBySocket(socket), chatMessage.Content);

            message.LogToConsole();
            channelToMessage.CacheMessage(message);

            AData dataToSend = message.GetChatMessage();

            NetworkMessage networkMessage = new NetworkMessage(dataToSend);

            channelToMessage.SendDataToAllUsers(networkMessage.ByteMessage);
        }
Beispiel #3
0
        private void HandleNicknameChangeData(AData data, Socket socket)
        {
            NicknameChangeData nicknameOperationsData = (NicknameChangeData)data;

            foreach (ChatChannel channel in _channelList.Values)
            {
                if (channel.UserList.Keys.Contains(socket))
                {
                    ChatUser user = channel.UserList[socket];

                    Message userChangedMessage = new Message(channel, user, string.Format("{0} changed their name to {1}", user.Nickname, nicknameOperationsData.NewNickname), true);
                    userChangedMessage.LogToConsole();

                    channel.CacheMessage(userChangedMessage);

                    NetworkMessage networkMessage = new NetworkMessage(userChangedMessage.GetChatMessage());
                    channel.SendDataToAllUsers(networkMessage.ByteMessage);

                    user.Nickname = nicknameOperationsData.NewNickname;

                    networkMessage = new NetworkMessage(channel.GetChannelData());
                    channel.SendDataToAllUsers(networkMessage.ByteMessage);
                }
            }
        }
Beispiel #4
0
        public void OK_AccessClassKeyWithOverrideEqualAndHashCode()
        {
            var cache = new Dictionary <AData, int>();
            var cont  = new List <AData>();

            for (int i = 0; i < ELEM_COUNT; ++i)
            {
                var o0 = new AData(i, i);
                cache.Add(o0, i);
                var o1 = new AData(i, i);
                cont.Add(o1);

                Assert.That(cache.ContainsKey(o1));
                Assert.That(o0.Equals(o1));
            }

            int k = 0;

            Assert.That(() =>
            {
                for (int j = 0; j < ELEM_COUNT; ++j)
                {
                    var data = cont[j];
                    var v    = cache[data];
                    k       += v;
                }
            },
                        Is.Not.AllocatingGCMemory()
                        );
            Assert.That(k, Is.EqualTo((ELEM_COUNT - 1) * ELEM_COUNT / 2));
        }
Beispiel #5
0
        public NetworkMessage(AData payloadData)
        {
            MessageType = DataTypeIds.GetIdByType(payloadData.GetType());

            String jsonData = JsonConvert.SerializeObject(payloadData);

            Payload = Encoding.UTF8.GetBytes(jsonData);
            Size    = (UInt32)Payload.LongLength + 5;
        }
Beispiel #6
0
        public void HandleData(AData data, Socket socket)
        {
            Type dataType = data.GetType();

            if (_typeActionPairs.ContainsKey(dataType))
            {
                _typeActionPairs[dataType]?.Invoke(data, socket);
            }
        }
Beispiel #7
0
        public void SendMessageToServer(AData message)
        {
            _connectedToServer.Wait();

            NetworkMessage networkMessage = new NetworkMessage(message);

            byte[] byteData = networkMessage.ByteMessage;

            _clientSocket.BeginSend(byteData, 0, byteData.Length, (SocketFlags)SOCKET_FLAGS, new AsyncCallback(SendMessageToServerCallback), _clientSocket);
        }
Beispiel #8
0
        private void HandleChannelData(AData data, Socket socket)
        {
            ChannelData channelData = (ChannelData)data;

            if (_channelList.Keys.Contains(channelData.ChannelId) && channelData.ChannelId != 0)
            {
                UpdateChannel(channelData);
            }
            else
            {
                CreateNewChannel(channelData, socket);
            }
        }
Beispiel #9
0
    override protected void HandleData(AData data)
    {
        ChatMessageData messageData = (ChatMessageData)data;

        if (ChatUser.I.chatChannels.ContainsKey(messageData.Channel))
        {
            ChatUser.I.chatChannels[messageData.Channel].AddMessage(messageData);
        }
        else
        {
            if (!_unreceivedMessages.ContainsKey(messageData.Channel))
            {
                _unreceivedMessages.Add(messageData.Channel, new Queue <ChatMessageData>());
            }
            _unreceivedMessages[messageData.Channel].Enqueue(messageData);
        }
    }
Beispiel #10
0
        private void HandleNewUserData(AData receivedData, Socket socket)
        {
            NewUserData data = (NewUserData)receivedData;

            if (OpenWall.UserList.Keys.Any(userSocket => userSocket == socket))
            {
                return;
            }

            ChatUser newUser = new ChatUser();

            newUser.Nickname = data.Nickname;

            AddUserToChannel(socket, newUser, OpenWall);

            NetworkMessage networkMessage = new NetworkMessage(OpenWall.GetChannelData());

            OpenWall.SendDataToAllUsers(networkMessage.ByteMessage);
        }
    override protected void HandleData(AData data)
    {
        ChannelData messageData = (ChannelData)data;

        if (!_user.chatChannels.ContainsKey(messageData.ChannelId))
        {
            Channel newChannel = Instantiate(_channelPrefab, _channelsHolder);
            newChannel.gameObject.SetActive(_user.CurrentChatChannel == messageData.ChannelId);
            newChannel.ChannelData = messageData;

            ChannelButton newChannelButton = Instantiate(_channelButtonPrefab, _channelButtonsHolder);
            newChannelButton.channelId        = messageData.ChannelId;
            newChannelButton.channelName.text = messageData.ChannelName;

            newChannel.ChannelButton = newChannelButton;
            _user.chatChannels.Add(messageData.ChannelId, newChannel);
        }

        _user.chatChannels[messageData.ChannelId].ChannelButton.channelName.text = messageData.ChannelName;
        _user.chatChannels[messageData.ChannelId].SetNicknameList(messageData.UserNicknames);
    }
Beispiel #12
0
        private void HandlePingData(AData data, Socket socket)
        {
            NetworkMessage networkMessage = new NetworkMessage(data);

            _server.SendData(networkMessage.ByteMessage, socket);
        }
Beispiel #13
0
 internal CDataModify(AData data) : base(data)
 {
 }
Beispiel #14
0
 private void HandleDisconnectUserData(AData receivedData, Socket socket)
 {
     UserDisconnected(socket);
 }
        /// <summary>
        /// 方法名称: Read
        /// 内容描述: 读取Excel文件中有效行列数据集
        /// 实现流程:
        /// 1.根据输入参数起始位置,结束位置确定读取范围
        /// 2.读取数据至DataSet
        /// 作    者: 林付国
        /// 日    期: 2006-5-11 9:20:53
        /// </summary>
        /// <returns>DataSet数据集</returns>
        public System.Data.DataSet Read()
        {
            #region 变量定义
            System.Data.DataSet   dsExcel = new DataSet();
            System.Data.DataTable dt      = new System.Data.DataTable();
            System.Data.DataRow   dr;
            int    i        = 0;
            int    j        = 0;
            string strStart = "A1";
            string strEnd   = "A1";
            Object[,] saRet;
            Object[,] AData;
            Excel.Range rng;
            DataSet     dsxmlSch = new DataSet();
            #endregion

            #region 加载Xml架构
            // 可选用不同于Excel文件的Xml文件
            if (this.XMLFilePath.Trim().ToString() == "")
            {
                dsxmlSch = this.LoadTemplate();
            }
            else
            {
                dsxmlSch = this.LoadTemplate(this.XMLFilePath.Trim().ToString());
            }
            // 增加列名
            this.AddColName(ref dt, dsxmlSch);
            #endregion

            #region 读取状态列
            try
            {
                // 读取状态列	rng = (Excel.Range)ws.Cells[0,0];在C#中这种写法不正确
                rng = ws.get_Range("A1", "B1");
            }
            catch
            {
                throw new Exception("读取Excel状态列错误,请检查!");
            }
            saRet = this.ConvertRngArray(rng);
            if ((saRet[1, 1] != null) && (saRet[1, 2] != null))
            {
                strStart = saRet[1, 1].ToString();
                strEnd   = saRet[1, 2].ToString();
            }
            else
            {
                throw new Exception("读取Excel文件错误,请检查!");
            }
            #endregion

            #region 读取数据
            try
            {
                // 读取数据
                rng   = ws.get_Range(strStart, strEnd);
                AData = this.ConvertRngArray(rng);
            }
            catch
            {
                throw new Exception("读取Excel文件错误,请检查!");
            }

            //Determine the dimensions of the array.
            int iRows;
            int iCols;
            iRows = AData.GetUpperBound(0);
            iCols = AData.GetUpperBound(1);
            // Checking
            if (!CellCheck(iRows, iCols))
            {
                throw new Exception("数据量过大,数据读取错误,请检查!");
            }
            try
            {
                for (i = 1; i <= iRows; i++)
                {
                    dr = dt.NewRow();
                    for (j = 0; j <= iCols - 1; j++)
                    {
                        if (AData[i, j + 1] != null)
                        {
                            dr[j] = AData[i, j + 1];
                        }
                        else
                        {
                            dr[j] = "";
                        }
                    }
                    dt.Rows.Add(dr);
                }
            }
            catch
            {
                throw new Exception("读取Excel文件错误,请检查!");
            }
            dsExcel.Tables.Add(dt);
            #endregion
            return(dsExcel);
        }
Beispiel #16
0
 private void ReturnPing(AData data, Socket socket)
 {
     _pingReturned = true;
 }
 virtual protected void HandleData(AData data)
 {
 }
Beispiel #18
0
 internal CDataAdd(AData data) : base(data)
 {
 }
Beispiel #19
0
 internal CDataDisAccess(AData aData)
     : base(aData)
 {
 }
 private void HandleDataOnUpdate(AData data, Socket socket)
 {
     Debug.Log("Received data asynchronically!");
     dataHandleQueue.Enqueue(data);
 }
 internal CDataConAccess(AData aData)
     : base(aData)
 {
 }
Beispiel #22
0
 internal CDataSearch(AData data) : base(data)
 {
 }
Beispiel #23
0
 internal CDataLoan(AData data) : base(data)
 {
 }