
com.gw.common.utils.GwClientWrapper Maven / Gradle / Ivy
package com.gw.common.utils;
import java.util.ArrayList;
import java.util.List;
import com.app.common.exception.CodeException;
import com.app.common.loadbalance.ClientConnectionResult;
import com.app.common.loadbalance.LoadBalanceManager;
import com.gateway.connector.tcp.client.IMessage;
import com.gateway.connector.tcp.client.IRspCallBack;
import com.gw.common.utils.GwClient.ClientConnection;
public class GwClientWrapper {
private final LoadBalanceManager loadBalanceManager = new LoadBalanceManager();
private final String loadBalanceName = "Router";
public OnlineStatus getOnlineStatus() {
return loadBalanceManager.getOnlineStatus();
}
public static int NoOnline = 1015;
public static String NoOnlineMsg = " is not Online";
public void addClientConnectListener(String serverKey, IConnectionListener cedaClientConnectListener) {
loadBalanceManager.addClientConnectListener(serverKey, cedaClientConnectListener);
}
public void init() {
loadBalanceManager.init();
}
public void init(String serverKey, String... serverName) {
getOrCreateClient(serverKey, serverName);
}
public void subscribe(String serverKey, String topic, IMessage messageListener) {
ClientConnectionResult result = loadBalanceManager.getClientConnection(loadBalanceName, serverKey, topic, null);
GwClient cc = result.gwClient;
ClientConnection con = result.clientConnection;
cc.subscribe(con, topic, messageListener);
}
public void unSubscribe(String serverKey, String topic, IMessage messageListener) throws Exception {
ClientConnectionResult result = loadBalanceManager.getClientConnection(loadBalanceName, serverKey, topic, null);
GwClient cc = result.gwClient;
ClientConnection con = result.clientConnection;
cc.unSubscribe(con, topic, messageListener);
}
public void subscribeWithImage(String serverKey, String topic, String svrID, String sid,
IMessage messageListener) {
ArrayList list = new ArrayList();
list.add(topic);
subscribeWithImage(serverKey, list, svrID, sid, messageListener);
}
public void subscribeWithImage(String serverKey, List list, String svrID, String sid,
IMessage messageListener) {
ClientConnectionResult result = loadBalanceManager.getClientConnection(loadBalanceName, serverKey, list.get(0),
null);
GwClient cc = result.gwClient;
ClientConnection con = result.clientConnection;
cc.subscribeWithImage(con, list, svrID, sid, messageListener);
}
public void unSubscribeWithImage(String serverKey, String topic, String svrID, String sid,
IMessage messageListener) throws Exception {
ArrayList list = new ArrayList();
list.add(topic);
unSubscribeWithImage(serverKey, list, svrID, sid, messageListener);
}
public void unSubscribeWithImage(String serverKey, List list, String svrID, String sid,
IMessage messageListener) throws Exception {
ClientConnectionResult result = loadBalanceManager.getClientConnection(loadBalanceName, serverKey, list.get(0),
null);
GwClient cc = result.gwClient;
ClientConnection con = result.clientConnection;
cc.unSubscribeWithImage(con, list, svrID, sid, messageListener);
}
private GwClient getOrCreateClient(String serverKey, String... serverName) {
return this.loadBalanceManager.getOrCreateClient(serverKey, serverName);
}
public void requestAsync(String sid, String serverKey, String topic, String content, long waitTime,
IRspCallBack rspCallBack) throws Exception {
ClientConnectionResult result = loadBalanceManager.getClientConnection(loadBalanceName, serverKey, topic,
content);
GwClient cc = result.gwClient;
ClientConnection con = result.clientConnection;
if (con == null) {
throw new CodeException(NoOnline, serverKey + NoOnlineMsg);
}
cc.requestAsync(con, sid, serverKey, topic, content, waitTime, rspCallBack);
}
public String requestSync(String serverKey, String topic, String content, long waitTime) throws Exception {
ClientConnectionResult result = loadBalanceManager.getClientConnection(loadBalanceName, serverKey, topic,
content);
GwClient cc = result.gwClient;
ClientConnection con = result.clientConnection;
if (con == null) {
throw new CodeException(NoOnline, serverKey + NoOnlineMsg);
}
return cc.requestSync(con, serverKey, topic, content, String.class, waitTime);
}
public String requestSync(String sid, String serverKey, String topic, String content, long waitTime)
throws Exception {
ClientConnectionResult result = loadBalanceManager.getClientConnection(loadBalanceName, serverKey, topic,
content);
GwClient cc = result.gwClient;
ClientConnection con = result.clientConnection;
if (con == null) {
throw new CodeException(NoOnline, serverKey + NoOnlineMsg);
}
return cc.requestSync(con, sid, serverKey, topic, content, String.class, waitTime);
}
public void dispose() {
loadBalanceManager.dispose();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy