Creative Commons License
本Blog采用 知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议 进行许可。 —— Fox <游戏人生>

游戏人生

游戏人生 != ( 人生 == 游戏 )
站点迁移至:http://www.yulefox.com。请订阅本博的朋友将RSS修改为http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

异步回调的一种封装——续

Posted on 2008-01-25 11:27 Fox 阅读(1449) 评论(4)  编辑 收藏 引用 所属分类: G游戏编程

Author: Fox

终于赶在周末之前调通了,现在来总结一下我这个项目中对于异步回调的应用背景。

这个项目的内容就是在游戏中使用第三方库为所有玩家提供更好的服务,当server启动后,加载dll,初始化该模块,当server退出时,结束模块功能,卸载dll。

当玩家提出请求后,server在main thread中通过lib转发玩家请求,lib处理完毕,在其独立thread中回调server为其实现的callback function。此时,server需要将返回的result转到main thread中对result及其相关的玩家数据进行处理。

第三方库的需求是很明确的,在合适的地方发送请求,在合适的地方处理响应。

Joe对我的要求也是很明确的,响应处理时采用server当前架构(这个架构在上一篇文中有提到),使我的编码不涉及任何游戏功能逻辑处理,并使整个处理流程细节对后续应用开发透明。

二者结合起来,就为这个项目融入整个server的架构提供了完美的需求,也为我的编码提供了最小限度的选择空间:(,好处是后续功能开发可以完全无视我的编码,只需实现对回调响应后的功能,只有server底层知悉如何调用。

给出序列图:

 

uml_asny_callback

为了保持对上层开发透明,OnCallback需要封装。

//-------------------------------------------------------------------------------
// 一年来,我主要参与了两款游戏,确切的说是半年,前面半年并没有真正涉及运营产品的开发,只是做工具。
// 现在这个模块是我做的最快,也是压力最大的一个。现在想来,原因在于此模块涉及到游戏主逻辑底层和
// 第三方动态链接库的通信及处理。
// 在短短几天的时间内让你的设计满足第三方库的应用需求并符合游戏自身底层逻辑的设计风格,的确有些痛苦,
// 好在有Joe的指点,让我在完成工作的同时又学到了一些方法:)。
//-------------------------------------------------------------------------------

Feedback

# re: 异步回调的一种封装——续  回复  更多评论   

2011-08-04 11:23 by replica chanel watches
看不懂

# re: 异步回调的一种封装——续  回复  更多评论   

2011-08-17 15:01 by Ralph Lauren polo shirts
学习了!!

# re: 异步回调的一种封装——续  回复  更多评论   

2011-09-02 18:30 by chanel watches
*Flees after dropping some flowers on poor Ai's grave.*

# re: 异步回调的一种封装——续  回复  更多评论   

2011-09-06 00:05 by jackk
这个写的不错啊,啊啊啊哈京哈阿娇卡时间发

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理