package com.northglass.service.common;
|
|
import java.util.List;
|
|
import org.slf4j.Logger;
|
|
import com.northglass.constants.ConnectState;
|
import com.northglass.constants.MachineState;
|
import com.northglass.entity.AbstractMachine;
|
import com.northglass.listener.ServerListener;
|
import com.northglass.log.GLoggerFactory;
|
|
public abstract class AbstractMachineService implements ServiceInterface {
|
|
private static final Logger LOGGER = GLoggerFactory.getLogger(AbstractMachineService.class);
|
|
public abstract void setConnectState(AbstractMachine machine, String connectState);
|
|
public abstract void resetState();
|
|
public abstract String processMessage(String sendMessageHex, AbstractMachine machine);
|
|
public abstract void saveMessage(String messageType, String message, String clientAddress, int clientPort);
|
|
public abstract String getManageURL(String machineNumber);
|
|
public String getConnectStateHtml(String state) {
|
StringBuffer html = new StringBuffer();
|
|
if (ConnectState.NO_CONNECT.equals(state)) {
|
html.append("<span class='label label-default'>").append(state).append("</span>");
|
}
|
else if (ConnectState.CONNECTING.equals(state)) {
|
html.append("<span class='label label-warning'>").append(state).append("</span>");
|
}
|
else if (ConnectState.CONNECTED.equals(state)) {
|
html.append("<span class='label label-success'>").append(state).append("</span>");
|
}
|
|
return html.toString();
|
}
|
|
public String getMachineStateHtml(String state) {
|
StringBuffer html = new StringBuffer();
|
|
if (MachineState.IN_WORK.equals(state)) {
|
html.append("<span class='label label-success'>").append(state).append("</span>");
|
}
|
else if (MachineState.STOPPED.equals(state)) {
|
html.append("<span class='label label-default'>").append(state).append("</span>");
|
}
|
else if (MachineState.WARNING.equals(state)) {
|
html.append("<span class='label label-warning'>").append(state).append("</span>");
|
}
|
else if (MachineState.SERIOUS_WARNING.equals(state)) {
|
html.append("<span class='label label-important'>").append(state).append("</span>");
|
}
|
|
return html.toString();
|
}
|
|
public void connect() {
|
LOGGER.debug("> Start connect");
|
|
List<AbstractMachine> machineList = getAll();
|
|
// 若监听线程为空,则新建监听线程
|
for (AbstractMachine machine : machineList) {
|
if (machine.getServerConnection().getThread() == null) {
|
LOGGER.debug("创建新的【" + machine.getNumber() + "】连接监听线程!");
|
Thread thread = new Thread(new ServerListener(machine, this));
|
thread.start();
|
|
setConnectState(machine, ConnectState.CONNECTING);
|
machine.getServerConnection().setThread(thread);
|
}
|
}
|
|
LOGGER.debug("> End connect");
|
}
|
|
public void disconnect(String machineNumber) {
|
LOGGER.debug("> Start disconnect");
|
|
AbstractMachine machine = ServerListener.getMachine(machineNumber);
|
|
try {
|
LOGGER.debug("" + machine.getServerConnection().getSocket());
|
LOGGER.debug("" + machine.getServerConnection().getServerSocket());
|
LOGGER.debug("" + machine.getServerConnection().getThread());
|
|
machine.getServerConnection().closeConnection();
|
setConnectState(machine, ConnectState.NO_CONNECT);
|
ServerListener.removeMachine(machineNumber);
|
}
|
catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
LOGGER.debug("> End disconnect");
|
}
|
}
|