Example usage for io.netty.channel.nio NioEventLoopGroup NioEventLoopGroup

List of usage examples for io.netty.channel.nio NioEventLoopGroup NioEventLoopGroup

Introduction

In this page you can find the example usage for io.netty.channel.nio NioEventLoopGroup NioEventLoopGroup.

Prototype

public NioEventLoopGroup(ThreadFactory threadFactory) 

Source Link

Document

Create a new instance using the default number of threads, the given ThreadFactory and the SelectorProvider which is returned by SelectorProvider#provider() .

Usage

From source file:com.cloudhopper.smpp.demo.SslClientMain.java

License:Apache License

static public void main(String[] args) throws Exception {
    ////from w ww .jav a2s .  c  o m
    // setup 3 things required for any session we plan on creating
    //

    // create and assign the NioEventLoopGroup instances to handle event processing,
    // such as accepting new connections, receiving data, writing data, and so on.
    NioEventLoopGroup group = new NioEventLoopGroup(1);

    // to enable automatic expiration of requests, a second scheduled executor
    // is required which is what a monitor task will be executed with - this
    // is probably a thread pool that can be shared with between all client bootstraps
    ScheduledThreadPoolExecutor monitorExecutor = (ScheduledThreadPoolExecutor) Executors
            .newScheduledThreadPool(1, new ThreadFactory() {
                private AtomicInteger sequence = new AtomicInteger(0);

                @Override
                public Thread newThread(Runnable r) {
                    Thread t = new Thread(r);
                    t.setName("SmppClientSessionWindowMonitorPool-" + sequence.getAndIncrement());
                    return t;
                }
            });

    // a single instance of a client bootstrap can technically be shared
    // between any sessions that are created (a session can go to any different
    // number of SMSCs) - each session created under
    // a client bootstrap will use the executor and monitorExecutor set
    // in its constructor - just be *very* careful with the "expectedSessions"
    // value to make sure it matches the actual number of total concurrent
    // open sessions you plan on handling - the underlying netty library
    // used for NIO sockets essentially uses this value as the max number of
    // threads it will ever use, despite the "max pool size", etc. set on
    // the executor passed in here
    DefaultSmppClient clientBootstrap = new DefaultSmppClient(group);

    //
    // setup configuration for a client session
    //
    DefaultSmppSessionHandler sessionHandler = new ClientSmppSessionHandler();

    SmppSessionConfiguration config0 = new SmppSessionConfiguration();
    config0.setWindowSize(1);
    config0.setName("Tester.Session.0");
    config0.setType(SmppBindType.TRANSCEIVER);
    config0.setHost("127.0.0.1");
    config0.setPort(2777);
    config0.setConnectTimeout(10000);
    config0.setSystemId("1234567890");
    config0.setPassword("password");
    config0.getLoggingOptions().setLogBytes(true);
    // to enable monitoring (request expiration)
    config0.setRequestExpiryTimeout(30000);
    config0.setWindowMonitorInterval(15000);
    config0.setCountersEnabled(true);
    //ssl
    config0.setUseSsl(true);

    //
    // create session, enquire link, submit an sms, close session
    //
    SmppSession session0 = null;

    try {
        // create session a session by having the bootstrap connect a
        // socket, send the bind request, and wait for a bind response
        session0 = clientBootstrap.bind(config0, sessionHandler);

        System.out.println("Press any key to send enquireLink #1");
        System.in.read();

        // demo of a "synchronous" enquireLink call - send it and wait for a response
        EnquireLinkResp enquireLinkResp1 = session0.enquireLink(new EnquireLink(), 10000);
        logger.info("enquire_link_resp #1: commandStatus [" + enquireLinkResp1.getCommandStatus() + "="
                + enquireLinkResp1.getResultMessage() + "]");

        System.out.println("Press any key to send enquireLink #2");
        System.in.read();

        // demo of an "asynchronous" enquireLink call - send it, get a future,
        // and then optionally choose to pick when we wait for it
        WindowFuture<Integer, PduRequest, PduResponse> future0 = session0.sendRequestPdu(new EnquireLink(),
                10000, true);
        if (!future0.await()) {
            logger.error("Failed to receive enquire_link_resp within specified time");
        } else if (future0.isSuccess()) {
            EnquireLinkResp enquireLinkResp2 = (EnquireLinkResp) future0.getResponse();
            logger.info("enquire_link_resp #2: commandStatus [" + enquireLinkResp2.getCommandStatus() + "="
                    + enquireLinkResp2.getResultMessage() + "]");
        } else {
            logger.error("Failed to properly receive enquire_link_resp: " + future0.getCause());
        }

        System.out.println("Press any key to send submit #1");
        System.in.read();

        String text160 = "\u20AC Lorem [ipsum] dolor sit amet, consectetur adipiscing elit. Proin feugiat, leo id commodo tincidunt, nibh diam ornare est, vitae accumsan risus lacus sed sem metus.";
        byte[] textBytes = CharsetUtil.encode(text160, CharsetUtil.CHARSET_GSM);

        SubmitSm submit0 = new SubmitSm();

        // add delivery receipt
        //submit0.setRegisteredDelivery(SmppConstants.REGISTERED_DELIVERY_SMSC_RECEIPT_REQUESTED);

        submit0.setSourceAddress(new Address((byte) 0x03, (byte) 0x00, "40404"));
        submit0.setDestAddress(new Address((byte) 0x01, (byte) 0x01, "44555519205"));
        submit0.setShortMessage(textBytes);

        SubmitSmResp submitResp = session0.submit(submit0, 10000);

        logger.info("sendWindow.size: {}", session0.getSendWindow().getSize());

        System.out.println("Press any key to unbind and close sessions");
        System.in.read();

        session0.unbind(5000);
    } catch (Exception e) {
        logger.error("", e);
    }

    if (session0 != null) {
        logger.info("Cleaning up session... (final counters)");
        if (session0.hasCounters()) {
            logger.info("tx-enquireLink: {}", session0.getCounters().getTxEnquireLink());
            logger.info("tx-submitSM: {}", session0.getCounters().getTxSubmitSM());
            logger.info("tx-deliverSM: {}", session0.getCounters().getTxDeliverSM());
            logger.info("tx-dataSM: {}", session0.getCounters().getTxDataSM());
            logger.info("rx-enquireLink: {}", session0.getCounters().getRxEnquireLink());
            logger.info("rx-submitSM: {}", session0.getCounters().getRxSubmitSM());
            logger.info("rx-deliverSM: {}", session0.getCounters().getRxDeliverSM());
            logger.info("rx-dataSM: {}", session0.getCounters().getRxDataSM());
        }

        session0.destroy();
        // alternatively, could call close(), get outstanding requests from
        // the sendWindow (if we wanted to retry them later), then call shutdown()
    }

    // this is required to not causing server to hang from non-daemon threads
    // this also makes sure all open Channels are closed to I *think*
    logger.info("Shutting down client bootstrap and executors...");
    clientBootstrap.destroy();
    monitorExecutor.shutdownNow();

    logger.info("Done. Exiting");
}

From source file:com.cmz.http.cors.HttpCorsServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure SSL.
    final SslContext sslCtx;
    if (SSL) {/*from   www  .j  av  a  2  s.com*/
        SelfSignedCertificate ssc = new SelfSignedCertificate();
        sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build();
    } else {
        sslCtx = null;
    }

    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
                .handler(new LoggingHandler(LogLevel.INFO)).childHandler(new HttpCorsServerInitializer(sslCtx));

        b.bind(PORT).sync().channel().closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.cmz.http.file.HttpStaticFileServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure SSL.
    final SslContext sslCtx;
    if (SSL) {/*w  w w  .  j av a 2 s  .c  o  m*/
        SelfSignedCertificate ssc = new SelfSignedCertificate();
        sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).sslProvider(SslProvider.JDK)
                .build();
    } else {
        sslCtx = null;
    }

    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
                .handler(new LoggingHandler(LogLevel.INFO))
                .childHandler(new HttpStaticFileServerInitializer(sslCtx));

        Channel ch = b.bind(PORT).sync().channel();

        System.err.println("Open your web browser and navigate to " + (SSL ? "https" : "http") + "://127.0.0.1:"
                + PORT + '/');

        ch.closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.cmz.http.snoop.HttpSnoopServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure SSL.
    final SslContext sslCtx;
    if (SSL) {//from   w w  w  .  jav  a  2s. c o  m
        SelfSignedCertificate ssc = new SelfSignedCertificate();
        sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build();
    } else {
        sslCtx = null;
    }

    // Configure the server.
    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
                .handler(new LoggingHandler(LogLevel.INFO))
                .childHandler(new HttpSnoopServerInitializer(sslCtx));

        Channel ch = b.bind(PORT).sync().channel();

        System.err.println("Open your web browser and navigate to " + (SSL ? "https" : "http") + "://127.0.0.1:"
                + PORT + '/');

        ch.closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.cmz.http.upload.HttpUploadServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure SSL.
    final SslContext sslCtx;
    if (SSL) {/*from  w  w w.j  a v  a2s .  c  o m*/
        SelfSignedCertificate ssc = new SelfSignedCertificate();
        sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build();
    } else {
        sslCtx = null;
    }

    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup);
        b.channel(NioServerSocketChannel.class);
        b.handler(new LoggingHandler(LogLevel.INFO));
        b.childHandler(new HttpUploadServerInitializer(sslCtx));

        Channel ch = b.bind(PORT).sync().channel();

        System.err.println("Open your web browser and navigate to " + (SSL ? "https" : "http") + "://127.0.0.1:"
                + PORT + '/');

        ch.closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.cmz.http.websocketx.benchmarkserver.WebSocketServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure SSL.
    final SslContext sslCtx;
    if (SSL) {//w  w  w .  ja  va2s.c  om
        SelfSignedCertificate ssc = new SelfSignedCertificate();
        sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build();
    } else {
        sslCtx = null;
    }

    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
                .childHandler(new WebSocketServerInitializer(sslCtx));

        Channel ch = b.bind(PORT).sync().channel();

        System.out.println("Open your web browser and navigate to " + (SSL ? "https" : "http") + "://127.0.0.1:"
                + PORT + '/');

        ch.closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.cmz.sctp.multihoming.SctpMultiHomingEchoServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure the server.
    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {/*  w ww.  j  a v  a2 s . c  om*/
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup).channel(NioSctpServerChannel.class)
                .option(ChannelOption.SO_BACKLOG, 100).handler(new LoggingHandler(LogLevel.INFO))
                .childHandler(new ChannelInitializer<SctpChannel>() {
                    @Override
                    public void initChannel(SctpChannel ch) throws Exception {
                        ch.pipeline().addLast(
                                //                             new LoggingHandler(LogLevel.INFO),
                                new SctpEchoServerHandler());
                    }
                });

        InetSocketAddress localAddress = SocketUtils.socketAddress(SERVER_PRIMARY_HOST, SERVER_PORT);
        InetAddress localSecondaryAddress = SocketUtils.addressByName(SERVER_SECONDARY_HOST);

        // Bind the server to primary address.
        ChannelFuture bindFuture = b.bind(localAddress).sync();

        //Get the underlying sctp channel
        SctpServerChannel channel = (SctpServerChannel) bindFuture.channel();

        //Bind the secondary address
        ChannelFuture connectFuture = channel.bindAddress(localSecondaryAddress).sync();

        // Wait until the connection is closed.
        connectFuture.channel().closeFuture().sync();
    } finally {
        // Shut down all event loops to terminate all threads.
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.cmz.sctp.SctpEchoServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure the server.
    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {//  w w  w .ja  v  a  2 s  .c o  m
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup).channel(NioSctpServerChannel.class)
                .option(ChannelOption.SO_BACKLOG, 100).handler(new LoggingHandler(LogLevel.INFO))
                .childHandler(new ChannelInitializer<SctpChannel>() {
                    @Override
                    public void initChannel(SctpChannel ch) throws Exception {
                        ch.pipeline().addLast(
                                //new LoggingHandler(LogLevel.INFO),
                                new SctpEchoServerHandler());
                    }
                });

        // Start the server.
        ChannelFuture f = b.bind(PORT).sync();

        // Wait until the server socket is closed.
        f.channel().closeFuture().sync();
    } finally {
        // Shut down all event loops to terminate all threads.
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.cmz.securechat.SecureChatServer.java

License:Apache License

public static void main(String[] args) throws Exception {
    SelfSignedCertificate ssc = new SelfSignedCertificate();
    SslContext sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build();

    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {/*from   w  ww. ja  v a2 s  .co  m*/
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
                .handler(new LoggingHandler(LogLevel.INFO))
                .childHandler(new SecureChatServerInitializer(sslCtx));

        b.bind(PORT).sync().channel().closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

From source file:com.codahale.grpcproxy.util.Netty.java

License:Apache License

public static EventLoopGroup newWorkerEventLoopGroup() {
    if (Epoll.isAvailable()) {
        return new EpollEventLoopGroup(WORKER_THREADS);
    }/*from w  w w  .  j ava  2 s.com*/
    return new NioEventLoopGroup(WORKER_THREADS);
}