public ServerQueueStatus connect(EndpointManager endpointManager, ServerLocation location,
ClientSideHandshake handshake, int socketBufferSize, int handshakeTimeout, int readTimeout,
CommunicationMode communicationMode, GatewaySender sender, SocketCreator sc)
throws IOException {
theSocket = sc.connectForClient(location.getHostName(), location.getPort(), handshakeTimeout,
socketBufferSize);
theSocket.setTcpNoDelay(true);
theSocket.setSendBufferSize(socketBufferSize);
verifySocketBufferSize(socketBufferSize, theSocket.getReceiveBufferSize(), "receive");
verifySocketBufferSize(socketBufferSize, theSocket.getSendBufferSize(), "send");
theSocket.setSoTimeout(handshakeTimeout);
out = theSocket.getOutputStream();
in = theSocket.getInputStream();
this.status = handshake.handshakeWithServer(this, location, communicationMode);
commBuffer = ServerConnection.allocateCommBuffer(socketBufferSize, theSocket);
if (sender != null) {
commBufferForAsyncRead = ServerConnection.allocateCommBuffer(socketBufferSize, theSocket);
}
theSocket.setSoTimeout(readTimeout);
endpoint = endpointManager.referenceEndpoint(location, this.status.getMemberId());
this.connectFinished = true;
this.endpoint.getStats().incConnections(1);
return status;
}