protected virtual void OnTcpServer_MessageReceived(object sender, TcpRawMessageReceivedEventArgs args)
        {
            GeneralMessage clientMessage = GeneralMessage.Deserialize(args.Message.MessageRawData, false);

            //if the server message is model
            if (clientMessage.Header == (int)MessageHeader.Model)
            {
                //get model from general message
                object model = _tcpServer.ConvertToModel(clientMessage);
                if (model is QueryServerTimeRequest)
                {
                    QueryServerTimeRequest  queryTimeReq = model as QueryServerTimeRequest;
                    QueryServerTimeResponse response     = new QueryServerTimeResponse
                    {
                        RequestID  = queryTimeReq.ID,
                        ServerTime = DateTime.Now
                    };
                    ServerRecvText += $"Received Request:\r\nfrom {queryTimeReq.Name}\r\n";
                    _tcpServer.SendModelMessage(args.Message.ClientID, response);
                }
                else
                {
                    //do something for other model
                }
            }
            else
            {
            }
        }
Esempio n. 2
0
        private void _tcpServer_MessageReceived(object sender, TcpRawMessageReceivedEventArgs args)
        {
            if (!_tcpServer.IsRunning)
            {
                return;
            }
            //get GeneralMessage from raw data without detached. The message will use shared memory with the receiving buffer.
            //So this function can't be returned until the buffer used up.
            GeneralMessage clientMessage = GeneralMessage.Deserialize(args.Message.MessageRawData, false);

            //if the client message is model
            if (clientMessage.Header == _tcpServer.HeaderIndicator)
            {
                //get model from general message
                object model = _tcpServer.ConvertToModel(clientMessage);
                if (model is IUploadFileMessage)
                {
                    _uploadFileHandler.ProcessFileMessage(args.Message.ClientID, model as IUploadFileMessage, clientMessage.Payload);
                }
                else
                {
                    //detach the message from the receiving buffer, so the message can be processed at any time.
                    clientMessage.Detach();
                }
            }
            else
            {
            }
        }