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();
}
}
});
}
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();
}
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);
}
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();
}
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());
}
Aggregations