Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1547392
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: 云计算

2013-12-12 22:47:55

参考 http://www.cnblogs.com/D-Tec/archive/2013/04/19/3030129.html
建立Channel的详细步骤及消息传递流程如下:(s表示server代码,c表示client代码)


  1. s: reds_init_net, 注册回调reds_accept 创建listen socket,增加监听watch_add(reds_accept),后续加入select监听

  2. c: RedChannel::run-》RedChannelBase::connect() -》RedPeer::connect_unsecure发送连接请求,等待服务端accept

  3. s: reds_accept
  4.     -》spice_server_add_client,reds_handle_new_link
  5.         -async_read_handler,异步接收数据,需要客户端发送数据,填充link->link_header结束
  6. c: RedChannelBase::link() -》link_mess.channel_type = _type,send 发送link请求,recive等待
  7. s:            -》reds_handle_read_header_done,
  8.                 -》async_read_handler,填充link->link_mess
  9.                     -》reds_handle_read_link_done
  10.                         —》async_read_handler,填充link->auth_mechanism
  11.                             ->reds_handle_auth_mechanism
  12.                                 ->reds_get_spice_ticket
  13.                                    —》async_read_handler,填充link->tiTicketing.encrypted_ticket.encrypted_data
  14.                                        —》 reds_handle_ticket
  15.                                            ->reds_handle_link
  16.                                              ->if (link->link_mess->channel_type == SPICE_CHANNEL_MAIN) { reds_handle_main_link(link); }

  17.    async_read_handler-》reds_stream_read堵塞,等待客户端发送消息
  18.  
reds_handle_main_link流程
    -》reds_send_link_result(link, SPICE_LINK_ERR_OK);

  1. c->s: SPICE_CHANNEL_MAIN s: reds_handle_main_link,此过程的详细步骤如上

  2. s->c: SPICE_MSG_MAIN_INIT, c: handle_init

  3. c->s: SPICE_MSGC_MAIN_ATTACH_CHANNELS s: reds_send_channels

  4. s->c: SPICE_MSG_MAIN_CHANNELS_LIST c: handle_channels


阅读(1882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~