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 事件通知

    Java Program!
  • 相关阅读:
    POJ 3276 Face The Right Way
    POJ 3061 Subsequence
    HDU 2104 hide handkerchief
    GCJ Crazy Rows
    HDU 1242 Rescue
    激光炸弹:二维前缀和
    I Hate It:线段树:单点修改+区间查询
    承压计算:模拟+double
    等差素数列:线性筛+枚举
    Period :KMP
  • 原文地址:https://www.cnblogs.com/programb/p/13005160.html
Copyright © 2011-2022 走看看