public override bool ConnectionRequest(TransportContext context) { TransportContextTCPIP tcpContext = context as TransportContextTCPIP; IXimuraRQRSEnvelope Env = null; try { Env = context.EnvelopeHelper.GetCallback(context.ServerCommandID.Value); context.SenderIdentitySet(Env); Env.DestinationAddress = new EnvelopeAddress(context.ServerCommandID.Value, "ConnRQ"); IXimuraProtocolConnectionRequest Request = Env.Request as IXimuraProtocolConnectionRequest; IXimuraProtocolConnectionResponse Response = Env.Response as IXimuraProtocolConnectionResponse; Request.ProtocolContextID = context.SignatureID; Request.RemoteUri = context.UriRemote; Request.LocalUri = context.UriLocal; Request.ConnectionType = TransportConnectionType.Connectionful; //We want a new server context, so we will not send an ID. Request.ServerContextID = context.ServerContextID; context.ContextSession.ProcessRequest(Env); if (Env.Response.Status != CH.HTTPCodes.OK_200) { return false; } context.ServerContextID = Response.ServerContextID; context.MessageTypeIn = Response.MessageRequestType; //context.FlowControl = Response.FlowControl; if (Response.MessageResponse != null) { context.MessageTransmit(Response.MessageResponse); } context.ClosePending = Response.CloseNotify; context.ConnectionStart(); return true; } catch (Exception ex) { return false; } finally { if (Env != null && Env.ObjectPoolCanReturn) Env.ObjectPoolReturn(); } return false; }