package com.walker.tcp.lb; import com.fasterxml.jackson.annotation.JsonIgnore; import com.walker.tcp.Response; import com.walker.tcp.connect.LongConnection; /** * 长连接元数据对象。 *
 *     1) 该对象描述了每个物理连接基本情况,全局存在。
 *     2) 在集群环境中使用,会集中存储到 Redis 中。
 *     3) 当物理连接被删除时,该描述缓存也会被一同删除。
 *     4) 当该对象缓存存在时,我们认为物理连接也是存在的。
 * 
* @author 时克英 * @date 2023-09-25 */ public class LongConnectionMeta extends LongConnection { public LongConnectionMeta(){} public LongConnectionMeta(String id) { super(id); } @JsonIgnore @Override public boolean supportLongConnection() { return true; } /** * 只要存在该对象,说明物理连接还在。 * @return */ @JsonIgnore @Override public boolean isConnected() { return true; } @Override public void write(Response response) { if(this.responseWriter == null){ throw new IllegalArgumentException("responseWriter未设置"); } super.write(response); this.responseWriter.write(ResponseWriter.TYPE_MQ, response, this.getConnectionHost(), this.getId()); this.onWrite(response); } protected void onWrite(Response response){ logger.info("LongConnectionMeta.onWrite(res)"); } public ResponseWriter getResponseWriter() { return responseWriter; } public void setResponseWriter(ResponseWriter responseWriter) { this.responseWriter = responseWriter; } @JsonIgnore private ResponseWriter responseWriter; }