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

📄 clientdefaultcrbtconntemplet.java

📁 中国联通炫铃业务接口开发
💻 JAVA
字号:
package com.wireless.crbt.gwif.netty2;
import java.util.Timer;
import java.util.TimerTask;

import net.gleamynode.netty2.Message;
import net.gleamynode.netty2.Session;
import net.gleamynode.netty2.SessionListener;

import org.apache.log4j.Logger;

import com.wireless.gwif.socketconn.ByteMessage;
import com.wireless.crbt.gwif.global.*;
public abstract class ClientDefaultCrbtConnTemplet implements SessionListener{
	 protected Session session = null;
	 protected Timer timer = null;         //定时器,若需要发送 下行信息则设置,否则置 NULL//定时器轮询时间
	 protected int controlSize=16;         //滑动窗口大小,默认值为16
	 protected boolean idleFlag = false;   //心跳包标志
	 protected Logger log = LoggerConstant.log;
	 private int period;	//下发速度控制
	 public ClientDefaultCrbtConnTemplet(){
	    }

	    public void initialize(){
	    }
	    public void finalize(){
	    }

	    public void setSession(Session asession){
	      this.session = asession;
	    }

	    public void setLog(Logger log){
	        this.log = log;
	    }

	    public void setIdleFlag(boolean idleFlag){
	      this.idleFlag = idleFlag;
	    }
	    /**
	     * 建立连接
	     * @param session Session
	     */
	    public void connectionEstablished(Session session) {

	        log.info("--- Connection established : " + session.getSocketAddress() + " ---");
	        //当物理连接建立成功后发送认证信息
	        processSendConnect();
	    }

	    /**
	     * 连接被关闭
	     * @param session Session
	     */
	    public void connectionClosed(Session session) {
	        log.info("--- Connection closed : " + session.getSocketAddress() + " ---");

	        //处理连接中断
	        processClosed();
	    }

	    /**
	     * 收到信息
	     * @param session Session
	     * @param message Message
	     */
	    public void messageReceived(Session session, Message message) {

	        ByteMessage clientMessage = (ByteMessage)message;
	        //对信息进行处理
	        process(clientMessage.getValue());
	    }

	    /**
	     * 信息被发送
	     * @param session Session
	     * @param message Message
	     */
	    public void messageSent(Session session, Message message) {
	    }

	    /**
	     * 心跳响应
	     * @param session Session
	     */
	    public void sessionIdle(Session session) {
	        //发送 ActiveTest 包
	        if( idleFlag ){
	          processSendActiveTest();
	        }
	    }

	    /**
	     * 异常捕获
	     * @param session Session
	     * @param cause Throwable
	     */
	    public void exceptionCaught(Session session, Throwable cause) {
	    	log.info("--- Exception Ocuur! : " + session.getSocketAddress() + " ---");
	        //处理异常信息
	        processException(cause);
	    }

	    /**
	     * 发送信息
	     * @param byteMessage byte[]
	     * @return boolean
	     */
	    public boolean write(byte [] message){

	        ByteMessage byteMessage = new ByteMessage();

	        byteMessage.setValue(message);
	        return this.session.write(byteMessage);
	    }

	    public boolean isClosed(){
	      return this.session.isClosed();
	    }

	    public void setControlSize(int controlSize){
	        this.controlSize = controlSize;
	    }

	    public void setPeriod(int aperiod){
	      this.period = (1000/aperiod);
	    }

	    public int getPeriod(){
	      return this.period;
	    }

	    public synchronized void startSendT(){
	      if( timer == null ){
	        timer = new Timer(true);
	        timer.schedule(new TimerTask() {
	          public void run() {
	              processSend();
	          }
	        } , period, period);
	      }
	    }

	    public synchronized void stopSendT(){
	      if( timer != null ){
	        timer.cancel();
	        timer = null;
	      }
	    }

	    public abstract void processSendConnect();
	    public abstract void process(byte [] bytes);
	    public abstract void processSendActiveTest();
	    public abstract void processSend();
	    public abstract void processSendTermate();
	    public abstract void processException(Throwable cause);
	    public abstract void processClosed();
}

⌨️ 快捷键说明

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