zuoxiao
2024-03-04 4d2d9239d8915a030bb84cb2147774470b04bf27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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();
}