channelContext = clientTransport.getConnectionContext();
wsConnectionManager.lockConnection(channelContext.getConnectionSession());
// Taking Codec from ChannelContext
final Codec codec = channelContext.getCodec();
final ContentType ct = codec.getStaticContentType(packet);
clientTransport.setContentType(ct.getContentType());
/* write transport SOAPAction header if required
* in HTTP this param is sent as HTTP header, in SOAP/TCP
* it is part of content-type (similar to SOAP 1.2) */
writeTransportSOAPActionHeaderIfRequired(channelContext, ct, packet);
if (logger.isLoggable(Level.FINE)) {
logger.log(Level.FINE, MessagesMessages.WSTCP_1013_TCP_TP_PROCESS_ENCODE(ct.getContentType()));
}
codec.encode(packet, clientTransport.openOutputStream());
if (logger.isLoggable(Level.FINE)) {
logger.log(Level.FINE, MessagesMessages.WSTCP_1014_TCP_TP_PROCESS_SEND());
}
clientTransport.send();
if (logger.isLoggable(Level.FINE)) {
logger.log(Level.FINE, MessagesMessages.WSTCP_1015_TCP_TP_PROCESS_OPEN_PREPARE_READING());
}
final InputStream replyInputStream = clientTransport.openInputStream();
if (logger.isLoggable(Level.FINE)) {
logger.log(Level.FINE, MessagesMessages.WSTCP_1016_TCP_TP_PROCESS_OPEN_PROCESS_READING(clientTransport.getStatus(), clientTransport.getContentType()));
}
if (clientTransport.getStatus() != TCPConstants.ERROR) {
final Packet reply = packet.createClientResponse(null);
if (clientTransport.getStatus() != TCPConstants.ONE_WAY) {
final String contentTypeStr = clientTransport.getContentType();
codec.decode(replyInputStream, contentTypeStr, reply);
} else {
releaseSession(channelContext);
}
return reply;
} else {