Package com.aceevo.ursus.core

Source Code of com.aceevo.ursus.core.UrsusTCPNIOApplication

package com.aceevo.ursus.core;

import com.aceevo.ursus.config.UrsusNIOApplicationConfiguration;
import org.glassfish.grizzly.filterchain.FilterChain;
import org.glassfish.grizzly.nio.transport.TCPNIOTransport;
import org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class UrsusTCPNIOApplication<T extends UrsusNIOApplicationConfiguration> extends UrsusNIOApplication<T, TCPNIOTransport> {

    final Logger LOGGER = LoggerFactory.getLogger(UrsusTCPNIOApplication.class);

    protected UrsusTCPNIOApplication(String[] args) {
        super(args);
    }

    /**
     * Starts Grizzly HTTP server exposing JAX-RS resources and UrsusWebSocketApplication defined
     * in this application.
     */
    @Override
    protected TCPNIOTransport initializeServer(FilterChain filterChain, T t) {

        if (t.getTcpnioApplication() == null) {
            return TCPNIOTransportBuilder.newInstance()
                    .setProcessor(filterChain)
                    .build();
        }

        UrsusNIOApplicationConfiguration.TCPNIOApplication tcpnioApplication = t.getTcpnioApplication();

        TCPNIOTransportBuilder tcpnioTransportBuilder = TCPNIOTransportBuilder.newInstance()
                .setClientSocketSoTimeout(tcpnioApplication.getClientSocketSoTimeout())
                .setConnectionTimeout(tcpnioApplication.getConnectionTimeout())
                .setKeepAlive(tcpnioApplication.isKeepAlive())
                .setLinger(tcpnioApplication.getLinger())
                .setReuseAddress(tcpnioApplication.isReuseAddress())
                .setServerConnectionBackLog(tcpnioApplication.getServerConnectionBacklog())
                .setServerSocketSoTimeout(tcpnioApplication.getServerSocketSoTimeout())
                .setTcpNoDelay(tcpnioApplication.isTcpNoDelay())
                .setOptimizedForMultiplexing(tcpnioApplication.isOptimizedForMultiplexing());

        if (tcpnioApplication.isMaxAyncWriteQueueSizeOverride())
            tcpnioTransportBuilder.setMaxAsyncWriteQueueSizeInBytes(tcpnioApplication.getMaxAsyncWriteQueueSize());

        return tcpnioTransportBuilder.build();

    }

}
TOP

Related Classes of com.aceevo.ursus.core.UrsusTCPNIOApplication

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.