
org.caiguoqing.uyuni.rpc.server.socketserver.SocketServer Maven / Gradle / Ivy
The newest version!
/**
*
*/
package org.caiguoqing.uyuni.rpc.server.socketserver;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import org.caiguoqing.uyuni.rpc.server.Server;
import org.caiguoqing.uyuni.rpc.server.ServerConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author org.caiguoqing
*
*/
public class SocketServer extends Server {
private Logger logger = LoggerFactory.getLogger(SocketServer.class);
private String errBegin = "RPCServer start failed:";
public SocketServer(ServerConfig config){
super(config);
logger.info("RPCServer created at port " + config.getPort());
}
public boolean start(){
ifRun = true;
new Thread(new Runnable() {
public void run() {
loop();
}
}).start();
return true;
}
public boolean stop(){
ifRun = false;
return true;
}
public boolean run(){
if(!check()){
logger.error(errBegin + "check fail");
return false;
}
return start();
}
public void loop() {
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(config.getPort());
} catch (IOException e) {
logger.error(errBegin + e.getMessage());
stop();
return;
}
logger.info("RPCServer start at port " + config.getPort());
while(ifRun){
try {
Socket socket = serverSocket.accept();
Post.getInstance().process(new SocketThread(socket,serviceInstances));
} catch (IOException e) {
logger.error(e.getMessage());
}
}
logger.info("RPCServer stop at port " + config.getPort());
try {
serverSocket.close();
} catch (IOException e) {
logger.error("close server socket fail:" + e.getMessage());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy