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

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