SPICE建立Channel的详细步骤及消息传递流程
2016-10-08 17:03
477 查看
参考 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
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(283) | 评论(0) | 转发(0) |
0
上一篇:打造自己的字节序转换函数(16位、32位和64位)
下一篇:SPICE 小计
相关热门文章
APP开发流程,你知道多少...
app开发需要多少钱
UBOOT-2012-10在OK6410平台的...
S3C6410启动方式及启动流程...
2014.4新版uboot启动流程分析...
[官版翻译ing]OpenStack云计算...
[官版翻译ing]OpenStack云计算...
hive的安装和配置
OpenStack安装记
Hadoop运行class类出现Excepti...
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
建立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
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(283) | 评论(0) | 转发(0) |
0
上一篇:打造自己的字节序转换函数(16位、32位和64位)
下一篇:SPICE 小计
相关热门文章
APP开发流程,你知道多少...
app开发需要多少钱
UBOOT-2012-10在OK6410平台的...
S3C6410启动方式及启动流程...
2014.4新版uboot启动流程分析...
[官版翻译ing]OpenStack云计算...
[官版翻译ing]OpenStack云计算...
hive的安装和配置
OpenStack安装记
Hadoop运行class类出现Excepti...
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 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的详细步骤