![JAR search and dependency download from the Maven repository](/logo.png)
link.jfire.socket.socketserver.handler.impl.StatusHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jfire-socket Show documentation
Show all versions of jfire-socket Show documentation
Jfire - socket is a server-side framework based on AIO. Users only need a simple implementation of a business logic processing interface can be the business data processing. The framework provides the client and server at the same time. Have strong connection capacity. Single server provides tens of thousands of connections.
The newest version!
package link.jfire.socket.socketserver.handler.impl;
import java.nio.charset.Charset;
import javax.annotation.Resource;
import link.jfire.baseutil.collection.ByteBufferPool;
import link.jfire.baseutil.simplelog.ConsoleLogFactory;
import link.jfire.baseutil.simplelog.Logger;
import link.jfire.codejson.JsonTool;
import link.jfire.socket.socketserver.bus.BusinessCommand;
import link.jfire.socket.socketserver.bus.Message;
import link.jfire.socket.socketserver.bus.ServerChannelInfo;
import link.jfire.socket.socketserver.bus.ServerStatusData;
import link.jfire.socket.socketserver.handler.MessageHandler;
import link.jfire.socket.socketserver.transfer.server.ServerStatus;
@Resource
public class StatusHandler implements MessageHandler
{
@Resource
private ServerStatus serverStatus;
private static Logger logger = ConsoleLogFactory.getLogger();
private Charset charset = Charset.forName("utf-8");
@Override
public byte interestedDataPacketType()
{
return BusinessCommand.SERVER_STATUS;
}
@Override
public void handler(Message message)
{
logger.debug("进行服务器状态查询");
try
{
ServerStatusData statusData = new ServerStatusData();
int count = serverStatus.getMessages().size();
int serverMemory = 0;
for (ServerChannelInfo each : serverStatus.getMessages())
{
serverMemory += each.getReadBuffer().capacity();
statusData.getConnectMap().put(each.getAddress(), each.getReadBuffer().capacity() / 1024 + "K");
}
statusData.setJvmMem(String.valueOf(Runtime.getRuntime().totalMemory() / 1024 / 1024) + "M");
statusData.setCacheMap(ByteBufferPool.getCacheStatus());
statusData.setServerMemory(serverMemory);
statusData.setNowConnect(count);
statusData.setBufferCacheSize(ByteBufferPool.getBufferCacheSize());
String reply = JsonTool.write(statusData);
message.getBusinessData().clear().putArray(reply.getBytes(charset)).startRead(0);
}
catch (Throwable e)
{
logger.error("查询服务器状态异常", e);
message.getChannelInfo().close();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy