Search in sources :

Example 1 with LoggerChannelOpenListener

use of com.firenio.component.LoggerChannelOpenListener in project baseio by generallycloud.

the class TestLengthValueClientPush method main.

@SuppressWarnings("resource")
public static void main(String[] args) throws Exception {
    IoEventHandle eventHandleAdaptor = new IoEventHandle() {

        @Override
        public void accept(Channel ch, Frame frame) throws Exception {
            System.out.println(">msg from server: " + frame);
        }
    };
    ChannelConnector context = new ChannelConnector(8300);
    context.setIoEventHandle(eventHandleAdaptor);
    context.addChannelEventListener(new LoggerChannelOpenListener());
    context.addProtocolCodec(new LengthValueCodec());
    Channel ch = context.connect();
    Util.exec(() -> {
        System.out.println("************************************************");
        System.out.println("提示:");
        System.out.println("list(获取所有客户端id)");
        System.out.println("id(获取当前客户端id)");
        System.out.println("push id msg(推送消息到)");
        System.out.println("broadcast msg(广播消息)");
        System.out.println("exit(退出客户端)");
        System.out.println("仅用于演示,msg请勿包含空格");
        System.out.println("************************************************");
        Scanner scanner = new Scanner(System.in);
        for (; ; ) {
            System.out.println(">");
            String line = scanner.nextLine();
            if ("exit".equals(line)) {
                Util.close(ch);
                break;
            }
            LengthValueFrame frame = new LengthValueFrame();
            frame.write(line, ch);
            try {
                ch.writeAndFlush(frame);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
Also used : IoEventHandle(com.firenio.component.IoEventHandle) LengthValueCodec(com.firenio.codec.lengthvalue.LengthValueCodec) Scanner(java.util.Scanner) LengthValueFrame(com.firenio.codec.lengthvalue.LengthValueFrame) Frame(com.firenio.component.Frame) Channel(com.firenio.component.Channel) ChannelConnector(com.firenio.component.ChannelConnector) LengthValueFrame(com.firenio.codec.lengthvalue.LengthValueFrame) LoggerChannelOpenListener(com.firenio.component.LoggerChannelOpenListener)

Example 2 with LoggerChannelOpenListener

use of com.firenio.component.LoggerChannelOpenListener in project baseio by generallycloud.

the class TestLengthValueServerJunit method server.

@Before
public void server() throws Exception {
    IoEventHandle eventHandle = new IoEventHandle() {

        @Override
        public void accept(Channel ch, Frame f) throws Exception {
            String text = f.getStringContent();
            f.setContent(ch.allocateWithSkipHeader(1));
            f.write("yes server already accept your message:", ch);
            f.write(text, ch);
            ch.writeAndFlush(f);
        }
    };
    context.addChannelEventListener(new LoggerChannelOpenListener());
    context.setIoEventHandle(eventHandle);
    context.addProtocolCodec(new LengthValueCodec());
    context.addChannelEventListener(new ChannelEventListenerAdapter() {

        @Override
        public void channelOpened(Channel ch) throws Exception {
            System.out.println(ch.getOption(SocketOptions.TCP_NODELAY));
            System.out.println(ch.getOption(SocketOptions.SO_RCVBUF));
            ch.setOption(SocketOptions.TCP_NODELAY, 1);
            ch.setOption(SocketOptions.SO_RCVBUF, 1028);
            System.out.println(ch.getOption(SocketOptions.TCP_NODELAY));
            System.out.println(ch.getOption(SocketOptions.SO_RCVBUF));
        }
    });
    context.bind();
}
Also used : IoEventHandle(com.firenio.component.IoEventHandle) LengthValueCodec(com.firenio.codec.lengthvalue.LengthValueCodec) LengthValueFrame(com.firenio.codec.lengthvalue.LengthValueFrame) Frame(com.firenio.component.Frame) Channel(com.firenio.component.Channel) ChannelEventListenerAdapter(com.firenio.component.ChannelEventListenerAdapter) LoggerChannelOpenListener(com.firenio.component.LoggerChannelOpenListener) Before(org.junit.Before)

Example 3 with LoggerChannelOpenListener

use of com.firenio.component.LoggerChannelOpenListener in project baseio by generallycloud.

the class TestLoadClient method main.

public static void main(String[] args) throws Exception {
    final Logger logger = LoggerFactory.getLogger(TestLoadClient.class);
    final CountDownLatch latch = new CountDownLatch(time);
    final AtomicInteger res = new AtomicInteger();
    final AtomicInteger req = new AtomicInteger();
    IoEventHandle eventHandleAdaptor = new IoEventHandle() {

        @Override
        public void accept(Channel ch, Frame frame) throws Exception {
        // latch.countDown();
        // long count = latch.getCount();
        // if (count % 10 == 0) {
        // if (count < 50) {
        // logger.info("************************================" + count);
        // }
        // }
        // logger.info("res==========={}",res.getAndIncrement());
        }
    };
    ChannelConnector context = new ChannelConnector(8300);
    context.setIoEventHandle(eventHandleAdaptor);
    context.addChannelEventListener(new LoggerChannelOpenListener());
    context.addProtocolCodec(new LengthValueCodec());
    Channel ch = context.connect();
    System.out.println("################## Test start ####################");
    long old = Util.now();
    for (int i = 0; i < time; i++) {
        LengthValueFrame frame = new LengthValueFrame();
        frame.write("hello server!", ch);
        ch.writeAndFlush(frame);
    }
    latch.await();
    long spend = (Util.past(old));
    System.out.println("## Execute Time:" + time);
    System.out.println("## OP/S:" + new BigDecimal(time * 1000).divide(new BigDecimal(spend), 2, BigDecimal.ROUND_HALF_UP));
    System.out.println("## Expend Time:" + spend);
    Util.close(context);
}
Also used : IoEventHandle(com.firenio.component.IoEventHandle) LengthValueFrame(com.firenio.codec.lengthvalue.LengthValueFrame) Frame(com.firenio.component.Frame) Channel(com.firenio.component.Channel) LengthValueFrame(com.firenio.codec.lengthvalue.LengthValueFrame) Logger(com.firenio.log.Logger) CountDownLatch(java.util.concurrent.CountDownLatch) BigDecimal(java.math.BigDecimal) LoggerChannelOpenListener(com.firenio.component.LoggerChannelOpenListener) LengthValueCodec(com.firenio.codec.lengthvalue.LengthValueCodec) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ChannelConnector(com.firenio.component.ChannelConnector)

Example 4 with LoggerChannelOpenListener

use of com.firenio.component.LoggerChannelOpenListener in project baseio by generallycloud.

the class TestLoadServer method main.

public static void main(String[] args) throws Exception {
    Options.setBufAutoExpansion(AUTO_EXPANSION);
    Options.setEnableEpoll(ENABLE_EPOLL);
    Options.setEnableUnsafeBuf(ENABLE_UNSAFE_BUF);
    IoEventHandle eventHandle = new IoEventHandle() {

        @Override
        public void accept(Channel ch, Frame f) throws Exception {
            String text = f.getStringContent();
            if (BUFFERED_WRITE) {
                ByteBuf buf = ch.getAttribute(WRITE_BUF);
                if (buf == null) {
                    buf = ch.allocate();
                    ByteBuf temp = buf;
                    ch.setAttribute(WRITE_BUF, buf);
                    ch.getEventLoop().submit(() -> {
                        ch.writeAndFlush(temp);
                        ch.setAttribute(WRITE_BUF, null);
                    });
                }
                byte[] data = text.getBytes(ch.getCharset());
                buf.writeInt(data.length);
                buf.writeBytes(data);
            } else {
                f.setString(text, ch);
                ch.writeAndFlush(f);
            }
        }
    };
    NioEventLoopGroup group = new NioEventLoopGroup(SERVER_CORE_SIZE);
    group.setMemoryCapacity(1024 * 512 * MEM_UNIT * SERVER_CORE_SIZE);
    group.setWriteBuffers(WRITE_BUFFERS);
    group.setMemoryUnit(MEM_UNIT);
    group.setEnableMemoryPool(ENABLE_POOL);
    ChannelAcceptor context = new ChannelAcceptor(group, 8300);
    context.addProtocolCodec(new LengthValueCodec());
    context.setIoEventHandle(eventHandle);
    if (ENABLE_SSL) {
    // context.setSslPem("localhost.key;localhost.crt");
    }
    context.addChannelEventListener(new LoggerChannelOpenListener());
    if (ENABLE_WORK_EVENT_LOOP) {
        context.setExecutorGroup(new ThreadEventLoopGroup("ep", 1024 * 256 * CLIENT_CORE_SIZE));
    }
    context.bind();
}
Also used : IoEventHandle(com.firenio.component.IoEventHandle) LengthValueCodec(com.firenio.codec.lengthvalue.LengthValueCodec) ThreadEventLoopGroup(com.firenio.concurrent.ThreadEventLoopGroup) Frame(com.firenio.component.Frame) Channel(com.firenio.component.Channel) ChannelAcceptor(com.firenio.component.ChannelAcceptor) ByteBuf(com.firenio.buffer.ByteBuf) NioEventLoopGroup(com.firenio.component.NioEventLoopGroup) LoggerChannelOpenListener(com.firenio.component.LoggerChannelOpenListener)

Example 5 with LoggerChannelOpenListener

use of com.firenio.component.LoggerChannelOpenListener in project baseio by generallycloud.

the class TestSimpleHttpClient method main.

@Test
public void main() throws Exception {
    Options.setEnableEpoll(true);
    Waiter<String> w = new Waiter<>();
    ChannelConnector context = new ChannelConnector("firenio.com", 443);
    SslContext sslContext = SslContextBuilder.forClient(true).build();
    context.addProtocolCodec(new ClientHttpCodec());
    context.addProtocolCodec(new WebSocketCodec());
    context.setIoEventHandle(new IoEventHandle() {

        @Override
        public void accept(Channel ch, Frame frame) {
            ClientHttpFrame res = (ClientHttpFrame) frame;
            System.out.println();
            System.out.println(new String(res.getBytesContent()));
            System.out.println();
            Util.close(context);
            w.call(new String(res.getBytesContent()), null);
        }
    });
    context.addChannelEventListener(new LoggerChannelOpenListener());
    context.setSslContext(sslContext);
    long start = Util.now();
    Channel ch = context.connect(3000);
    ch.writeAndFlush(new ClientHttpFrame("/test?p=2222"));
    w.await(3000);
    System.out.println(Util.past(start));
    Assert.assertEquals("yes server already accept your message :) {p=2222}", w.getResponse());
}
Also used : IoEventHandle(com.firenio.component.IoEventHandle) Frame(com.firenio.component.Frame) ClientHttpFrame(com.firenio.codec.http11.ClientHttpFrame) Channel(com.firenio.component.Channel) LoggerChannelOpenListener(com.firenio.component.LoggerChannelOpenListener) ChannelConnector(com.firenio.component.ChannelConnector) ClientHttpCodec(com.firenio.codec.http11.ClientHttpCodec) Waiter(com.firenio.concurrent.Waiter) ClientHttpFrame(com.firenio.codec.http11.ClientHttpFrame) SslContext(com.firenio.component.SslContext) WebSocketCodec(com.firenio.codec.http11.WebSocketCodec) Test(org.junit.Test)

Aggregations

LoggerChannelOpenListener (com.firenio.component.LoggerChannelOpenListener)28 Channel (com.firenio.component.Channel)26 Frame (com.firenio.component.Frame)24 IoEventHandle (com.firenio.component.IoEventHandle)24 ChannelConnector (com.firenio.component.ChannelConnector)17 LengthValueCodec (com.firenio.codec.lengthvalue.LengthValueCodec)14 ChannelAcceptor (com.firenio.component.ChannelAcceptor)10 LengthValueFrame (com.firenio.codec.lengthvalue.LengthValueFrame)9 NioEventLoopGroup (com.firenio.component.NioEventLoopGroup)7 WebSocketCodec (com.firenio.codec.http11.WebSocketCodec)5 ProtobaseCodec (com.firenio.codec.protobase.ProtobaseCodec)5 Waiter (com.firenio.concurrent.Waiter)5 ClientHttpCodec (com.firenio.codec.http11.ClientHttpCodec)4 ClientHttpFrame (com.firenio.codec.http11.ClientHttpFrame)4 ProtobaseFrame (com.firenio.codec.protobase.ProtobaseFrame)4 HttpFrame (com.firenio.codec.http11.HttpFrame)3 ChannelAliveListener (com.firenio.component.ChannelAliveListener)3 ChannelEventListenerAdapter (com.firenio.component.ChannelEventListenerAdapter)3 ByteBuf (com.firenio.buffer.ByteBuf)2 HttpCodec (com.firenio.codec.http11.HttpCodec)2