use of com.generallycloud.baseio.component.SocketChannelContext in project baseio by generallycloud.
the class BalanceServerBootStrap method getBalanceChannelContext.
private SocketChannelContext getBalanceChannelContext(BalanceContext balanceContext, ServerConfiguration configuration, ProtocolFactory protocolFactory) {
SocketChannelContext context = new NioSocketChannelContext(configuration);
// SocketChannelContext context = new AioSocketChannelContext(configuration);
context.setIoEventHandleAdaptor(balanceContext.getBalanceFacadeAcceptorHandler());
context.addSessionEventListener(balanceContext.getBalanceFacadeAcceptorSEListener());
context.setProtocolFactory(protocolFactory);
context.setBeatFutureFactory(balanceBeatFutureFactory);
if (balanceSessionEventListeners != null) {
addSessionEventListener2Context(context, balanceSessionEventListeners);
}
if (balanceSessionIdleEventListeners != null) {
addSessionIdleEventListener2Context(context, balanceSessionIdleEventListeners);
}
if (sslContext != null) {
context.setSslContext(sslContext);
}
return context;
}
use of com.generallycloud.baseio.component.SocketChannelContext in project baseio by generallycloud.
the class TestPrintBusyServlet method doAccept.
@Override
protected void doAccept(HttpSession session, HttpFuture future) throws Exception {
SocketChannelContext context = session.getIoSession().getContext();
PooledByteBufAllocatorManager allocator = (PooledByteBufAllocatorManager) context.getByteBufAllocatorManager();
allocator.printBusy();
future.write("true");
future.setResponseHeader("Content-Type", "text/html");
session.flush(future);
}
use of com.generallycloud.baseio.component.SocketChannelContext in project baseio by generallycloud.
the class TestShowMemoryServlet method doAccept.
@Override
protected void doAccept(HttpSession session, HttpFuture future) throws Exception {
ApplicationContext appContext = ApplicationContext.getInstance();
FutureAcceptorServiceLoader fasLoader = appContext.getFutureAcceptorServiceLoader();
TestWebSocketChatServlet chatServlet = (TestWebSocketChatServlet) fasLoader.getFutureAcceptor("/web-socket-chat");
TestWebSocketRumpetrollServlet rumpetrollServlet = (TestWebSocketRumpetrollServlet) fasLoader.getFutureAcceptor("/web-socket-rumpetroll");
WebSocketMsgAdapter chatMsgAdapter = chatServlet.getMsgAdapter();
WebSocketMsgAdapter rumpetrollMsgAdapter = rumpetrollServlet.getMsgAdapter();
SocketChannelContext context = session.getIoSession().getContext();
HttpContext httpContext = session.getContext();
BigDecimal time = new BigDecimal(System.currentTimeMillis() - context.getStartupTime());
BigDecimal anHour = new BigDecimal(60 * 60 * 1000);
BigDecimal hour = time.divide(anHour, 3, RoundingMode.HALF_UP);
ByteBufAllocatorManager allocator = context.getByteBufAllocatorManager();
String allocatorDes = "unpooled";
if (allocator instanceof PooledByteBufAllocatorManager) {
allocatorDes = ((PooledByteBufAllocatorManager) allocator).toDebugString();
}
ServerConfiguration configuration = context.getServerConfiguration();
int SERVER_CORE_SIZE = configuration.getSERVER_CORE_SIZE();
int SERVER_MEMORY_POOL_CAPACITY = configuration.getSERVER_MEMORY_POOL_CAPACITY() * SERVER_CORE_SIZE;
int SERVER_MEMORY_POOL_UNIT = configuration.getSERVER_MEMORY_POOL_UNIT();
double MEMORY_POOL_SIZE = new BigDecimal(SERVER_MEMORY_POOL_CAPACITY * SERVER_MEMORY_POOL_UNIT).divide(new BigDecimal(1024 * 1024), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
int M = 1024 * 1024;
Runtime runtime = Runtime.getRuntime();
StringBuilder builder = new StringBuilder(HtmlUtil.HTML_HEADER);
builder.append(" <div style=\"margin-left:20px;\">\n");
builder.append("服务器内存使用情况:</BR>\n");
builder.append("虚拟机占用内存:");
builder.append(runtime.totalMemory() / M);
builder.append("M;\n</BR>已占用内存:");
builder.append((runtime.totalMemory() - runtime.freeMemory()) / M);
builder.append("M;\n</BR>空闲内存:");
builder.append(runtime.freeMemory() / M);
builder.append("M;\n</BR>内存池大小:");
builder.append(MEMORY_POOL_SIZE);
builder.append("M;\n</BR>内存池状态(Heap):");
builder.append(allocatorDes);
builder.append("\n</BR>聊天室(WebSocket)客户端数量:");
builder.append(chatMsgAdapter.getClientSize());
builder.append("\n</BR>小蝌蚪(WebSocket)客户端数量:");
builder.append(rumpetrollMsgAdapter.getClientSize());
builder.append("\n</BR>服务器当前连接数(io-session):");
builder.append(context.getSessionManager().getManagedSessionSize());
builder.append(";\n</BR>服务器当前会话数(http-session):");
builder.append(httpContext.getHttpSessionManager().getManagedSessionSize());
builder.append(";\n</BR>服务运行时间:");
builder.append(hour + "H;");
builder.append(" </div>\n");
builder.append(HtmlUtil.HTML_POWER_BY);
builder.append(HtmlUtil.HTML_BOTTOM);
future.write(builder.toString());
future.setResponseHeader("Content-Type", "text/html");
session.flush(future);
}
use of com.generallycloud.baseio.component.SocketChannelContext in project baseio by generallycloud.
the class TestProtobufClient method main.
public static void main(String[] args) throws Exception {
ProtobufUtil protobufUtil = new ProtobufUtil();
protobufUtil.regist(SearchRequest.getDefaultInstance());
IoEventHandleAdaptor eventHandleAdaptor = new IoEventHandleAdaptor() {
@Override
public void accept(SocketSession session, Future future) throws Exception {
ProtobaseFuture f = (ProtobaseFuture) future;
SearchRequest res = (SearchRequest) protobufUtil.getMessage(f);
System.out.println();
System.out.println("________" + res);
System.out.println();
}
};
SocketChannelContext context = new NioSocketChannelContext(new ServerConfiguration(18300));
SocketChannelConnector connector = new SocketChannelConnector(context);
context.setIoEventHandleAdaptor(eventHandleAdaptor);
context.addSessionEventListener(new LoggerSocketSEListener());
// context.addSessionEventListener(new SessionActiveSEListener());
// context.setBeatFutureFactory(new FLBeatFutureFactory());
context.setProtocolFactory(new ProtobaseProtocolFactory());
SocketSession session = connector.connect();
ProtobaseFuture f = new ProtobaseFutureImpl(context);
ByteString byteString = ByteString.copyFrom("222".getBytes());
SearchRequest request = SearchRequest.newBuilder().setCorpus(Corpus.IMAGES).setPageNumber(100).setQuery("test").setQueryBytes(byteString).setResultPerPage(-1).build();
protobufUtil.writeProtobuf(request, f);
session.flush(f);
ThreadUtil.sleep(100);
CloseUtil.close(connector);
}
use of com.generallycloud.baseio.component.SocketChannelContext in project baseio by generallycloud.
the class TestReconnectClient method main.
public static void main(String[] args) throws Exception {
IoEventHandleAdaptor eventHandleAdaptor = new IoEventHandleAdaptor() {
@Override
public void accept(SocketSession session, Future future) throws Exception {
}
};
SocketChannelContext context = new NioSocketChannelContext(new ServerConfiguration("localhost", 8300));
ReconnectableConnector connector = new ReconnectableConnector(context);
connector.setRetryTime(5000);
context.setIoEventHandleAdaptor(eventHandleAdaptor);
context.addSessionEventListener(new LoggerSocketSEListener());
context.setProtocolFactory(new FixedLengthProtocolFactory());
// context.addSessionEventListener(new CloseConnectorSEListener(connector.getRealConnector()));
connector.connect();
ThreadUtil.sleep(Long.MAX_VALUE);
CloseUtil.close(connector);
}
Aggregations