void ExecuteResponseError(RemotingResponseError remotingResponseError) { bool exists = requests.TryRemove(remotingResponseError.RequestId, out RemotingRequest remotingRequest); if (!exists) { logger.Warn($"Got response error for unknown request id {remotingResponseError.RequestId}"); return; } remotingRequest.SetError(remotingResponseError.Exception); ProcessRemoteExecutionExceptionInternal(remotingRequest, remotingResponseError.Exception); }
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(); } }