用tnl实现高可信赖的对象同步机制
来源:互联网 发布:java template class 编辑:程序博客网 时间:2024/06/15 15:26
tnl的ghostobject的通信方式是非常强大的.能以很小代价在多个客户端同步任意多的对象,但是因为其简洁反而不好理解.这里阐述一下.
客户端连接的时候自己并没有生成在两边要同步的对象,
客户端只是trigger了服务端,使得其在OnconnectionInited 的时候生成在两边要同步的对象.然后
服务端再设置该对象为ghostable那么的在下一个服务端的tick()的时候,这个要同步的对象就被broadcast到
所有的客户端上去了.那客户端怎么知道这时候来的就是自己能控制的对象而不是其他客户端的呢?因为在server
broadcast这个同步对象的时候是通过与不同客户端连接的connection来发送出去的.只要发送的时候判断当前发送的
这个同步对象是不是与当前发送用的connection向关联的就行了(该connection设定了 setScopeObject(该object);).
相关的就是对应客户端能够控制的.其他的都是被动收来的.
在两端都建立好同步的对象以后. 通信方式从client的同步对象到server 是通过rpc callback的方式直接改该同步对象在server端
的对象的.从server到client的话则完全不同.这个是因为从server到client 实际上是广播的方式.故而是通过在server端先在继承下来
packupdate函数封装数据.在client时候通过继承unpackupdate来放包装来做的.在运行的时候具体决定要broadcast什么数据是通过
在server端通过设置maskbit来确定要传送的数据的.换句话说,原则上客户端不修改本地的同步对象而是通过callserver让server来广播出去(也广播到自己的ghostobject上)
client(RPCEventSend) <-> server(RPCEventReceived) RPC 1...1
client(unpack) <- server(pack) broadcast n...1
正因为如此,所以对于一个已经在一个connection上注册的了
(事实上是有多个connection都设置一个同步对象为客户端操作对象的可能性的,比如作为录象客户端)
同步对象的
performScopeQuery的操作直接被该connection callback从而来决定究竟其他的那些需要进行同步的对象应该满足什么样的
关系才能被这个connection从server 传递到 client 那里去.
- 用tnl实现高可信赖的对象同步机制
- tnl的ghostObject分析--使在线玩家为n人的架构实现
- 如何编写可信赖的代码
- 如何编写可信赖的代码
- 如何精选可信赖的信息源
- 用锁定机制(lock关健字)实现线程的同步。
- java实现高性能的数据同步
- java实现高性能的数据同步
- java实现高性能的数据同步
- Memcache分组和同步机制的实现
- Memcache分组和同步机制的实现
- Memcache分组和同步机制的实现
- 关于ucenter实现同步登录的机制
- Memcache分组和同步机制的实现
- Memcache分组和同步机制的实现
- 同步机制的几种实现简介
- 并发中的同步--WCF并发体系的同步机制实现
- 并发中的同步--WCF并发体系的同步机制实现
- 反思Spring:由Ruby on Rails想到的
- 反向控制和面向切面编程在Spring的应用
- 各类型的ID头解析
- 情人节小感
- 暴力算法解益智题(c#2.0版本)
- 用tnl实现高可信赖的对象同步机制
- 套接字选项和I/O控制命令
- 同样的效果,两种写法效率竟然差了10倍
- C中的可变参数研究
- XP Repair Pro 2007
- Rainbow Portal 2.0 Beta 1 发布了
- win2000下tomcat&apache的配置
- 春节给自己放几天假!
- 牛奶广告既然作的像卫生巾一样谁还敢喝?