All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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