SPICE建立Channel的详细步骤及消息传递流程
2016-11-23 14:08
197 查看
http://blog.chinaunix.net/uid-24709751-id-4035504.html
参考 http://www.cnblogs.com/D-Tec/archive/2013/04/19/3030129.html
建立Channel的详细步骤及消息传递流程如下:(s表示server代码,c表示client代码)
s: reds_init_net, 注册回调reds_accept 创建listen
socket,增加监听watch_add(reds_accept),后续加入select监听
c: RedChannel::run-》RedChannelBase::connect()
-》RedPeer::connect_unsecure发送连接请求,等待服务端accept
s: reds_accept
-》spice_server_add_client,reds_handle_new_link
-》async_read_handler,异步接收数据,需要客户端发送数据,填充link->link_header结束
c: RedChannelBase::link() -》link_mess.channel_type = _type,send
发送link请求,recive等待
s: -》reds_handle_read_header_done,
-》async_read_handler,填充link->link_mess
-》reds_handle_read_link_done
—》async_read_handler,填充link->auth_mechanism
->reds_handle_auth_mechanism
->reds_get_spice_ticket
—》async_read_handler,填充link->tiTicketing.encrypted_ticket.encrypted_data
—》 reds_handle_ticket
->reds_handle_link
->if (link->link_mess->channel_type == SPICE_CHANNEL_MAIN) { reds_handle_main_link(link); }
async_read_handler-》reds_stream_read堵塞,等待客户端发送消息
reds_handle_main_link流程
-》reds_send_link_result(link, SPICE_LINK_ERR_OK);
c->s: SPICE_CHANNEL_MAIN s: reds_handle_main_link,此过程的详细步骤如上
s->c: SPICE_MSG_MAIN_INIT, c: handle_init
c->s: SPICE_MSGC_MAIN_ATTACH_CHANNELS s: reds_send_channels
s->c: SPICE_MSG_MAIN_CHANNELS_LIST c: handle_channels
参考 http://www.cnblogs.com/D-Tec/archive/2013/04/19/3030129.html
建立Channel的详细步骤及消息传递流程如下:(s表示server代码,c表示client代码)
s: reds_init_net, 注册回调reds_accept 创建listen
socket,增加监听watch_add(reds_accept),后续加入select监听
c: RedChannel::run-》RedChannelBase::connect()
-》RedPeer::connect_unsecure发送连接请求,等待服务端accept
s: reds_accept
-》spice_server_add_client,reds_handle_new_link
-》async_read_handler,异步接收数据,需要客户端发送数据,填充link->link_header结束
c: RedChannelBase::link() -》link_mess.channel_type = _type,send
发送link请求,recive等待
s: -》reds_handle_read_header_done,
-》async_read_handler,填充link->link_mess
-》reds_handle_read_link_done
—》async_read_handler,填充link->auth_mechanism
->reds_handle_auth_mechanism
->reds_get_spice_ticket
—》async_read_handler,填充link->tiTicketing.encrypted_ticket.encrypted_data
—》 reds_handle_ticket
->reds_handle_link
->if (link->link_mess->channel_type == SPICE_CHANNEL_MAIN) { reds_handle_main_link(link); }
async_read_handler-》reds_stream_read堵塞,等待客户端发送消息
reds_handle_main_link流程
-》reds_send_link_result(link, SPICE_LINK_ERR_OK);
c->s: SPICE_CHANNEL_MAIN s: reds_handle_main_link,此过程的详细步骤如上
s->c: SPICE_MSG_MAIN_INIT, c: handle_init
c->s: SPICE_MSGC_MAIN_ATTACH_CHANNELS s: reds_send_channels
s->c: SPICE_MSG_MAIN_CHANNELS_LIST c: handle_channels
相关文章推荐
- SPICE建立Channel的详细步骤及消息传递流程
- Oracle建立DBLINK的详细步骤记录
- 实现了流程实例详细步骤信息的查看
- 在家看孩子,10分钟生成一个业务管理系统【能支持多数据库,大数据,流程审批,权限控制,即时提醒】,视频讲解详细实现步骤
- android 消息传递流程
- iphone真机调试流程和详细步骤
- Oracle建立DBLINK的详细步骤记录
- qte流程分析,键盘的挂载和键盘消息的传递
- Oracle建立DBLINK的详细步骤记录
- Oracle建立DBLINK的详细步骤记录
- 再谈非模态对话框的销毁 / 对话框建立过程/ 对话框销毁过程/ 消息传递过程
- Oracle建立DBLINK的详细步骤记录
- Oracle建立DBLINK的详细步骤记录
- dwr3实现消息精确推送详细步骤
- Visual C#建立简单消息传递系统(1)
- Oracle建立DBLINK的详细步骤记录【转】
- Oracle建立DBLINK的详细步骤记录
- Oracle建立DBLINK的详细步骤记录
- Oracle建立DBLINK的详细步骤记录
- 建立ADO的详细步骤