Exemplo n.º 1
0
        public void OnMessage(IReader reader)
        {
            try
            {
                if (closed)
                {
                    logger.Debug($"Got message when closed. Ignoring...");
                    return;
                }

                MessageType       messageType       = (MessageType)reader.ReadByte();
                ReadFormatterInfo readFormatterInfo = new ReadFormatterInfo(reader, rpcSerializer);
                switch (messageType)
                {
                case MessageType.RpcRequest:
                    RemotingRequest remotingRequest = new RemotingRequest();
                    remotingRequest.MergeFrom(readFormatterInfo);
                    LogMessageReceived(remotingRequest);
                    EnqueueRequest(remotingRequest);
                    break;

                case MessageType.RpcResponse:
                    RemotingResponse remotingResponse = new RemotingResponse();
                    remotingResponse.MergeFrom(readFormatterInfo);
                    LogMessageReceived(remotingResponse);
                    ExecuteResponse(remotingResponse);
                    break;

                case MessageType.RpcResponseError:
                    RemotingResponseError remotingResponseError = new RemotingResponseError();
                    remotingResponseError.MergeFrom(readFormatterInfo);
                    LogMessageReceived(remotingResponseError);
                    ExecuteResponseError(remotingResponseError);
                    break;

                default:
                    OnExtraMessage(messageType, readFormatterInfo);
                    break;
                }
            }
            catch (Exception outerException)
            {
                logger.Error($"Unhandled exception on {this.GetType().Name}.{nameof(OnMessage)}(): {outerException}");
                Connection.Close();
            }
        }
Exemplo n.º 2
0
 internal virtual void OnExtraMessage(MessageType messageType, ReadFormatterInfo readFormatterInfo)
 {
     throw new ArgumentException($"Wrong message type: {messageType}, perhaps encryption or compression mismatch");
 }