
com.zlyx.easynetty.server.NettyServerManager Maven / Gradle / Ivy
package com.zlyx.easynetty.server;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import com.zlyx.easycore.annotations.ApplicationRefreshedBean;
import com.zlyx.easycore.refresh.IHandlerOnChanged;
import com.zlyx.easycore.refresh.IHandlerOnRefreshed;
import com.zlyx.easycore.tool.Console;
import com.zlyx.easycore.utils.ObjectUtils;
import com.zlyx.easycore.utils.ThreadManager;
import com.zlyx.easynetty.server.annotations.Server;
import com.zlyx.easynetty.server.core.AbstractNettyServer;
import com.zlyx.easynetty.server.core.NettyFactory;
/**
* @Auth 赵光
* @Describle
* @2019年1月25日 下午2:12:06
*/
@ApplicationRefreshedBean(todo = { "easy-netty-server" })
public class NettyServerManager implements IHandlerOnRefreshed, IHandlerOnChanged{
private Logger logger = LoggerFactory.getLogger(this.getClass());
private List factorys;
@Override
public void doOnRefreshed(ApplicationContext context) throws Exception {
Map servers = context.getBeansOfType(AbstractNettyServer.class);
Server serverAnno = null;
AbstractNettyServer iServer = null;
NettyFactory factory = null;
factorys = new ArrayList();
if(servers != null && servers.size() > 0) {
for(String name : servers.keySet()) {
iServer = servers.get(name);
if(iServer.isOpen()) {
serverAnno = iServer.getClass().getAnnotation(Server.class);
if(ObjectUtils.isNotEmpty(serverAnno) && serverAnno.isOpen()) {
logger.info("Easy-netty have started an listener on port "+ serverAnno.port()+" for "+iServer);
factory = new NettyFactory(serverAnno.port(), iServer);
factorys.add(factory);
ThreadManager.execute(factory);
}
}else {
Console.log(iServer, "is closed");
}
}
logger.info("Easy-netty have been started!");
}
}
@Override
public void doOnChanged(ApplicationContext context) throws Exception {
if(factorys != null) {
for(NettyFactory factory: factorys) {
factory.close();
}
logger.info("Easy-netty have been closed!");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy