public Message Process(Message messageStream) { try { lock (connector.proxy_lock) { IMessageSerializer serializer = connector.MessageSerializer; char code = '\0'; if (serviceType == ServiceType.Admin) { code = 'a'; } else if (serviceType == ServiceType.Block) { code = 'b'; } else if (serviceType == ServiceType.Manager) { code = 'm'; } else if (serviceType == ServiceType.Root) { code = 'r'; } // Write the message. connector.pout.Write(code); TcpServiceAddressHandler handler = new TcpServiceAddressHandler(); byte[] addressBytes = handler.ToBytes(address); connector.pout.Write(handler.GetCode(typeof(TcpServiceAddress))); connector.pout.Write(addressBytes.Length); connector.pout.Write(addressBytes); serializer.Serialize(messageStream, connector.pout.BaseStream); connector.pout.Flush(); ResponseMessage baseResponse = (ResponseMessage)serializer.Deserialize(connector.pin.BaseStream, MessageType.Response); return(new ResponseMessage((RequestMessage)messageStream, baseResponse)); } } catch (IOException e) { // Probably caused because the proxy closed the connection when a // timeout was reached. throw new Exception("IO Error", e); } }
public Message Process(Message messageStream) { try { lock (connector.proxy_lock) { IMessageSerializer serializer = connector.MessageSerializer; char code = '\0'; if (serviceType == ServiceType.Admin) code = 'a'; else if (serviceType == ServiceType.Block) code = 'b'; else if (serviceType == ServiceType.Manager) code = 'm'; else if (serviceType == ServiceType.Root) code = 'r'; // Write the message. connector.pout.Write(code); TcpServiceAddressHandler handler = new TcpServiceAddressHandler(); byte[] addressBytes = handler.ToBytes(address); connector.pout.Write(handler.GetCode(typeof(TcpServiceAddress))); connector.pout.Write(addressBytes.Length); connector.pout.Write(addressBytes); serializer.Serialize(messageStream, connector.pout.BaseStream); connector.pout.Flush(); ResponseMessage baseResponse = (ResponseMessage) serializer.Deserialize(connector.pin.BaseStream, MessageType.Response); return new ResponseMessage((RequestMessage) messageStream, baseResponse); } } catch (IOException e) { // Probably caused because the proxy closed the connection when a // timeout was reached. throw new Exception("IO Error", e); } }