package com.walker.tcp; public interface Connection { /** * 通道ID,这个是java系统连接通道提供的全局唯一ChannelId * @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,通常一个项目中可能存在多种服务,每个服务对应一个服务引擎。

* 如:一个TCP监听1010端口,另外一个服务监听2020端口等。

* 如果系统只有一个监听服务,默认engineId = 0 * @return */ int getEngineId(); /** * 返回连接最后一次活动时间 * @return */ long getLastTime(); /** * 连接绑定业务标识,如:设备ID等

* 绑定后,连接就被认证,后续可以使用了 */ void bindName(String name); /** * 长连接,判断是否连接状态 * @return */ boolean isConnected() ; ProtocolResolver getProtocolResolver(); /** * 设置报文解析器对象。对于一个连接会关联一个解析器以方便在request和response中使用 * @param resolver */ void setProtocolResolver(ProtocolResolver resolver); /** * 获取该连接对象绑定的主机信息,在集群环境中,需要标记连接对应主机。 *

目前在聊天模块中,多主机部署通过消息方式推送,主机信息是队列的一部分,通过对方连接的主机知道消息如何被路由接收。

* @return * @date 2023-09-19 */ String getConnectionHost(); void setConnectionHost(String connectionHost); int getAlreadyLogin(); }