shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package com.walker.tcp;
 
public interface Connection {
 
    /**
     * 通道ID,这个是java系统连接通道提供的全局唯一<code>ChannelId</code>
     * @return
     */
    String getId();
 
    /**
     * 连接名称,这个也是系统唯一的,通常由业务定义或者绑定。如:卡号、设备终端IMEI等
     * @return
     */
    String getName();
 
    void setName(String name);
 
    long getCreateTimeMills();
 
    boolean supportLongConnection();
 
    /**
     * 如果是长连接模式,返回该连接是否被业务认证。如果未认证就无法使用
     * @return
     */
    boolean isAuthenticated();
 
    /**
     * 当前是否空闲
     * @return
     */
    boolean isIdle();
 
    Request<?> read();
 
    void write(Response<?> response);
 
    /**
     * 服务端强制断开连接
     */
    void disconnect();
 
    /**
     * 获得该连接对应的引擎ID,通常一个项目中可能存在多种服务,每个服务对应一个服务引擎。</p>
     * 如:一个TCP监听1010端口,另外一个服务监听2020端口等。</p>
     * 如果系统只有一个监听服务,默认engineId = 0
     * @return
     */
    int getEngineId();
 
    /**
     * 返回连接最后一次活动时间
     * @return
     */
    long getLastTime();
 
    /**
     * 连接绑定业务标识,如:设备ID等</p>
     * 绑定后,连接就被认证,后续可以使用了
     */
    void bindName(String name);
 
    /**
     * 长连接,判断是否连接状态
     * @return
     */
    boolean isConnected() ;
 
    ProtocolResolver getProtocolResolver();
 
    /**
     * 设置报文解析器对象。对于一个连接会关联一个解析器以方便在request和response中使用
     * @param resolver
     */
    void setProtocolResolver(ProtocolResolver resolver);
 
    /**
     * 获取该连接对象绑定的主机信息,在集群环境中,需要标记连接对应主机。
     * <p>目前在聊天模块中,多主机部署通过消息方式推送,主机信息是队列的一部分,通过对方连接的主机知道消息如何被路由接收。</p>
     * @return
     * @date 2023-09-19
     */
    String getConnectionHost();
 
    void setConnectionHost(String connectionHost);
 
    int getAlreadyLogin();
}