注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[DarkStar] sgs.protocol.*  

2009-07-08 08:47:05|  分类: lang_java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
==== 总纲 ====
sgs.protocol.*, 定义基本的网络协议规则
sgs.impl.protocol.simple.*, 官方给出的 sgs.protocol.* 的实现,我们可以自己实现一套,从而定制我们自己的协议。


==== sgs.protocol.* ====

-- sgs.protocol.SessionProtocol --
定义 server => client 的网络消息发送行为。在这个层次上就划定了 session/channel 两种消息类别。
sessionMessage()
channelJoin() / channelLeave() / channelMessage()

-- sgs.protocol.SessionProtocolHandler --
服务器收到客户端的消息后(client => server), SessionProtocolHandler 负责向上层逻辑发送 session/channel 消息的处理请求。对每个处理请求,同时注册一个 RequestCompletionHandler。

-- sgs.protocol.RequestCompletionHandler --
当 SessionProtocolHandler 的某个处理请求完成时,调用 RequestCompletionHandler.completed()

-- sgs.protocol.LoginFailureException/LoginRedirectException --
登录失败时跑出的异常 / 要求客户端连接另一个node的异常。在这个层面上定义两种异常,应该是整个框架的上层需要知道这两种情况,猜想~

-- sgs.protocol.ProtocolDescriptor --
通过 boolean supportsProtocol(ProtocolDescriptor descriptor), 判断客户端连上来使用的 protocol 是否被当前服务器的 ProtocolAcceptor 所支持。

-- sgs.protocol.ProtocolAcceptor --
等待客户端连接的 acceptor。
作为 ProtocolDescriptor 的工厂,通过 ProtocolDescriptor getDescriptor() 可以得到一个"验证 protocol 是否被当前 acceptor 支持"的 descriptor。其实直接在 acceptor 上定义 supportsProtocol() 接口也不错,就不需要定义 interface ProtocolDescriptor 了。
通过 void accept(ProtocolListener listener) 设定 ProtocolListener, 当一个客户端连接到达时,acceptor 要负责调用 listener.newLogin() 来处理连接逻辑。


sgs.protocol.SessionProtocol  <-- sgs.impl.protocol.simple.SimpleSgsProtocolImpl
(to be continue...)
  评论这张
 
阅读(674)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017