Example usage for org.apache.http.nio NHttpServerConnection getSocketTimeout

List of usage examples for org.apache.http.nio NHttpServerConnection getSocketTimeout

Introduction

In this page you can find the example usage for org.apache.http.nio NHttpServerConnection getSocketTimeout.

Prototype

int getSocketTimeout();

Source Link

Usage

From source file:org.opcfoundation.ua.transport.https.HttpsServerPendingRequest.java

void sendResponse(int statusCode, IEncodeable responseObject) {
    try {/*from   w  w w . j a  va2s .  c  o m*/
        HttpResponse responseHandle = httpExchange.getResponse();
        responseHandle.setHeader("Content-Type", "application/octet-stream");
        responseHandle.setStatusCode(statusCode);

        if (responseObject != null) {
            try {
                logger.trace("sendResponse: requestId={} statusCode={} responseObject={}", requestId,
                        statusCode, responseObject);
                logger.debug("sendResponse: requestId={} statusCode={} responseObject={}", requestId,
                        statusCode, responseObject.getClass().getSimpleName());

                //Check isDebugEnabled() here for possible performance reasons.
                if (logger.isDebugEnabled() && channel.getConnection() != null) {
                    NHttpServerConnection nHttpServerConnection = ((HttpsServerConnection) channel
                            .getConnection()).getNHttpServerConnection();
                    logger.debug("sendResponse: timeout={} {} context={}", httpExchange.getTimeout(),
                            nHttpServerConnection.getSocketTimeout(), nHttpServerConnection.getContext());
                }
                EncoderCalc calc = new EncoderCalc();
                calc.setEncoderContext(endpoint.getEncoderContext());
                calc.putMessage(responseObject);
                int len = calc.getLength();
                byte[] data = new byte[len];
                BinaryEncoder enc = new BinaryEncoder(data);
                enc.setEncoderContext(endpoint.getEncoderContext());
                enc.setEncoderMode(EncoderMode.NonStrict);
                enc.putMessage(responseObject);
                responseHandle.setEntity(new NByteArrayEntity(data));
            } catch (EncodingException e) {
                logger.info("sendResponse: Encoding failed", e);
                // Internal Error
                if (responseObject instanceof ErrorMessage == false) {
                    responseHandle.setStatusCode(500);
                }
            }
        }
        logger.debug("sendResponse: {} length={}", responseHandle,
                responseHandle.getEntity().getContentLength());
        httpExchange.submitResponse(new BasicAsyncResponseProducer(responseHandle));
    } finally {
        endpoint.pendingRequests.remove(requestId);
    }
}