zoukankan      html  css  js  c++  java
  • 服务端处理 Watcher 实现 ?

    1、服务端接收 Watcher 并存储

    接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点

    的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现

    Watcher 的 process 接口,此时可以看成一个 Watcher 对象)存储在

    WatcherManager 的 WatchTable 和 watch2Paths 中去。

    2、Watcher 触发

    以服务端接收到 setData() 事务请求触发 NodeDataChanged 事件为例:

    2.1 封装 WatchedEvent

    将通知状态(SyncConnected)、事件类型(NodeDataChanged)以及节点路

    径封装成一个 WatchedEvent 对象

    2.2 查询 Watcher

    WatchTable 中根据节点路径查找 Watcher

    2.3 没找到;说明没有客户端在该数据节点上注册过 Watcher

    2.4 找到;提取并从 WatchTable 和 Watch2Paths 中删除对应 Watcher(从这里

    可以看出 Watcher 在服务端是一次性的,触发一次就失效了

    3、调用 process 方法来触发 Watcher

    这里 process 主要就是通过 ServerCnxn 对应的 TCP 连接发送 Watcher 事件通知。

  • 相关阅读:
    MCU 51-7 I2C Communication EEPROM
    FinalShell(免费的XShell替代品)
    Docker部署Redis
    Docker-Compose部署ELK
    Linux清空文件
    Linux防火墙的操作
    VSCode远程连接Linux服务器
    Apollo分布式配置中心
    SpringBoot整合log4j2
    MySQL区分大小写
  • 原文地址:https://www.cnblogs.com/programb/p/12687108.html
Copyright © 2011-2022 走看看