⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgipsmproxy.java

📁 华为CNGP.CMPP.SGIP.CMPP源代码。
💻 JAVA
字号:
package com.huawei.smproxy;

import java.io.IOException;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import com.huawei.insa2.comm.sgip.SGIPConnection;
import com.huawei.insa2.comm.sgip.SGIPTransaction;
import com.huawei.insa2.comm.sgip.SSEventListener;
import com.huawei.insa2.comm.sgip.SSListener;
import com.huawei.insa2.comm.sgip.message.SGIPDeliverMessage;
import com.huawei.insa2.comm.sgip.message.SGIPDeliverRepMessage;
import com.huawei.insa2.comm.sgip.message.SGIPMessage;
import com.huawei.insa2.comm.sgip.message.SGIPReportMessage;
import com.huawei.insa2.comm.sgip.message.SGIPReportRepMessage;
import com.huawei.insa2.comm.sgip.message.SGIPUserReportMessage;
import com.huawei.insa2.comm.sgip.message.SGIPUserReportRepMessage;
import com.huawei.insa2.util.Args;

public class SGIPSMProxy implements SSEventListener {
	private SGIPConnection conn;

	private SSListener listener;

	private Args args;

	private HashMap serconns;

	private int src_nodeid;

	public SGIPSMProxy(Map args) {
		this(new Args(args));
	}

	public SGIPSMProxy(Args args) {
		this.args = args;
		src_nodeid = args.get("source-addr", 0);
	}

	public synchronized boolean connect(String loginName, String loginPass) {
		boolean result = true;
		if (loginName != null)
			args.set("login-name", loginName.trim());
		if (loginPass != null)
			args.set("login-pass", loginPass.trim());
		conn = new SGIPConnection(args, true, null);
		conn.addEventListener(new SGIPEventAdapter(this, conn));
		conn.waitAvailable();
		if (!conn.available()) {
			result = false;
			throw new IllegalStateException(conn.getError());
		} else {
			return result;
		}
	}

	public synchronized void startService(String localhost, int localport) {
		if (listener != null)
			return;
		try {
			listener = new SSListener(localhost, localport, this);
			listener.beginListen();
		} catch (Exception exception) {
		}
	}

	public synchronized void stopService() {
		if (listener == null)
			return;
		listener.stopListen();
		if (serconns != null) {
			SGIPConnection conn;
			for (Iterator iterator = serconns.keySet().iterator(); iterator
					.hasNext(); conn.close()) {
				String addr = (String) iterator.next();
				conn = (SGIPConnection) serconns.get(addr);
			}

			serconns.clear();
		}
	}

	public synchronized void onConnect(Socket socket) {
		String peerIP = socket.getInetAddress().getHostAddress();
		int port = socket.getPort();
		if (serconns == null)
			serconns = new HashMap();
		SGIPConnection conn = new SGIPConnection(args, false, serconns);
		conn.addEventListener(new SGIPEventAdapter(this, conn));
		conn.attach(args, socket);
		serconns.put(peerIP + port, conn);
	}

	public SGIPMessage send(SGIPMessage message) throws IOException {
		if (message == null)
			return null;
		SGIPTransaction t = (SGIPTransaction) conn.createChild();
		t.setSPNumber(src_nodeid);
		Date nowtime = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("MMddHHmmss");
		String tmpTime = dateFormat.format(nowtime);
		Integer timestamp = new Integer(tmpTime);
		t.setTimestamp(timestamp.intValue());
		try {
			t.send(message);
			t.waitResponse();
			SGIPMessage rsp = t.getResponse();
			SGIPMessage sgipmessage = rsp;
			return sgipmessage;
		} finally {
			t.close();
		}
	}

	public void onTerminate() {
	}

	public SGIPMessage onDeliver(SGIPDeliverMessage msg) {
		return new SGIPDeliverRepMessage(0);
	}

	public SGIPMessage onReport(SGIPReportMessage msg) {
		return new SGIPReportRepMessage(0);
	}

	public SGIPMessage onUserReport(SGIPUserReportMessage msg) {
		return new SGIPUserReportRepMessage(0);
	}

	public void close() {
		conn.close();
	}

	public SGIPConnection getConn() {
		return conn;
	}

	public String getConnState() {
		if (conn != null)
			return conn.getError();
		else
			return "\u5C1A\u672A\u5EFA\u7ACB\u8FDE\u63A5";
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -