Login or Sign up

jabberd2: c2s 模块分析

Posted by: tigerz on Sept. 7, 2011

基于jabberd-2.2.9做的分析,客户端用的 Psi v0.14。

网上有一些分析 jabberd2 结构的文章,具体在这就不细说。

因为我们项目目前需要修改 C2S 跟客户端的通讯协议,直接进入主题,分析从客户端收到一个包,并触发event_PACKET:

调用栈:

#0  _c2s_client_sx_callback (s=0x8098398, e=event_PACKET, data=0x80a20a0, arg=0x8099768) at c2s.c:251
#1  0x0805b236 in __sx_event (file=0x806ec3d "io.c", line=156, s=0x8098398, e=event_PACKET, data=0x80a20a0) at sx.c:328
#2  0x08059c07 in _sx_process_read (s=0x8098398, buf=0x80a18c0) at io.c:156
#3  0x0805a2c7 in sx_can_read (s=0x8098398) at io.c:243
#4  0x080516fc in _c2s_client_mio_callback (m=0x807b8e0, a=action_READ, fd=0x8099750, data=0x0, arg=0x8099768) at c2s.c:536
#5  0x08062c1e in _mio_run (m=0x807b8e0, timeout=5) at mio_impl.h:261
#6  0x08056961 in main (argc=3, argv=0xbfffea04) at main.c:732

可以看出来,mio 模块收到数据后,转给 sx,sx 再调用回调 c2sclient_sx_callback。

Comments on This Post:

Please Login (or Sign Up) to leave a comment