コード例 #1
0
ファイル: Server.cs プロジェクト: lijiaoshou/RemoteAppClient
        public void MessageReceived(ChannelMessage msg)
        {
            switch (msg.Type)
            {
            default:
                Log("Unknown message: " + msg);
                break;

            case MessageType.HelloResponse:
            {
                var response = (HelloResponse)msg;
                if (!SeenHello)
                {
                    SeenHello = true;
                    Log(response.MachineName + " connected to " + Environment.MachineName);
                    OnConnected(response.MachineName);
                }
            }
            break;

            case MessageType.ListenResponse:
            {
                var            response = (ListenResponse)msg;
                ClientListener listener = null;
                lock (clientListeners)
                {
                    if (clientListeners.ContainsKey(response.ListenIndex))
                    {
                        listener = clientListeners[response.ListenIndex];
                    }
                }
                if (listener != null)
                {
                    listener.ListenResponse(response);
                }
            }
            break;

            case MessageType.AcceptRequest:
            {
                var            request  = (AcceptRequest)msg;
                ClientListener listener = null;
                lock (clientListeners)
                {
                    if (clientListeners.ContainsKey(request.ListenIndex))
                    {
                        listener = clientListeners[request.ListenIndex];
                    }
                }
                if (listener != null)
                {
                    listener.AcceptRequest(request);
                }
            }
            break;

            case MessageType.ConnectResponse:
                ((ConnectResponse)msg).Process(this);
                break;

            case MessageType.StreamData:
                ((StreamData)msg).Process(this);
                break;

            case MessageType.StreamError:
            {
                var            error    = (StreamError)msg;
                ClientListener listener = null;
                lock (clientListeners)
                {
                    if (clientListeners.ContainsKey(error.StreamIndex))
                    {
                        listener = clientListeners[error.StreamIndex];
                    }
                }
                if (listener != null)
                {
                    listener.StreamError(error);
                }
                else
                {
                    ((StreamError)msg).Process(this);
                }
            }
            break;
            }
        }