| package com.easysocket.connection.reconnect; | 
|   | 
| import com.easysocket.entity.OriginReadData; | 
| import com.easysocket.entity.SocketAddress; | 
| import com.easysocket.interfaces.conn.IConnectionManager; | 
| import com.easysocket.interfaces.conn.IReconnListener; | 
| import com.easysocket.interfaces.conn.SocketActionListener; | 
|   | 
| /** | 
|  * Author:Alex | 
|  * Date:2019/5/31 | 
|  * Note:抽象重连器 | 
|  */ | 
| public abstract class AbsReconnection extends SocketActionListener implements IReconnListener { | 
|     /** | 
|      * 连接管理器 | 
|      */ | 
|     protected IConnectionManager connectionManager; | 
|     /** | 
|      * socket连接管理器是否已销毁 | 
|      */ | 
|     protected boolean isDetach; | 
|   | 
|   | 
|     @Override | 
|     public synchronized void attach(IConnectionManager iConnectionManager) { | 
|         if (!isDetach) { | 
|             detach(); | 
|         } | 
|         isDetach = false; | 
|         connectionManager = iConnectionManager; | 
|         connectionManager.subscribeSocketAction(this); // 监听socket行为 | 
|     } | 
|   | 
|     @Override | 
|     public synchronized void detach() { | 
|         isDetach = true; | 
|         if (connectionManager != null) | 
|             connectionManager.unSubscribeSocketAction(this); | 
|     } | 
|   | 
|     @Override | 
|     public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) { | 
|         // donothing | 
|     } | 
|   | 
|     /** | 
|      * 是否正在重连 | 
|      * @return | 
|      */ | 
|     public abstract boolean isReconning(); | 
| } |