/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.f1x.v1; import org.f1x.api.FixSettings; import org.f1x.api.FixVersion; import org.f1x.api.session.SessionStatus; import org.f1x.io.InputChannel; import org.f1x.io.InputStreamChannel; import org.f1x.io.OutputChannel; import org.f1x.io.OutputStreamChannel; import java.io.IOException; import java.net.Socket; import java.net.SocketAddress; public abstract class FixSocketCommunicator extends FixCommunicator { public FixSocketCommunicator(FixVersion fixVersion, FixSettings settings) { super(fixVersion, settings); } protected void connect (Socket socket) throws IOException { if (LOGGER.isInfoEnabled()) { SocketAddress address = socket.getRemoteSocketAddress(); LOGGER.info().append("Connected to ").append(address).commit(); } FixSettings settings = getSettings(); socket.setTcpNoDelay(settings.isSocketTcpNoDelay()); socket.setKeepAlive(settings.isSocketKeepAlive()); socket.setSoTimeout(settings.getSocketTimeout()); socket.setSendBufferSize(settings.getSocketSendBufferSize()); socket.setReceiveBufferSize(settings.getSocketRecvBufferSize()); setSessionStatus(SessionStatus.SocketConnected); connect(getInputChannel(socket), getOutputChannel(socket)); } protected InputChannel getInputChannel (Socket socket) throws IOException { return new InputStreamChannel(socket.getInputStream()); } protected OutputChannel getOutputChannel (Socket socket) throws IOException { return new OutputStreamChannel(socket.getOutputStream()); } }