文件

方法

描述

Application.cpp

init_globals()

初始化Log,ssl库,canvas(或opengl canvas)和quic压缩库

Process_cmd_line()

解析命令行连接参数

init_platform_globals()

分别对windows和linux 平台初始化显示、键盘和窗口等

init_remainder()

初始化监视器、菜单(快捷键)和事件侦听等

Run()

调用ProcessLoop的run()

ProcessLoop

Run()

Application.cpp

on_start_running()

调用 connect()

Connect()

调用Red_client.cpp的connect(),唤醒等待的线程

Red_channel.cpp

Run()

调用RedChannelBase的connect()方法

Red_Peer.cpp

Connect_secure()

Connect_unsecure()

根据配置,采用安全或非安全连接,实际连接到server端

Red_channel.cpp

Link()

发送 SpiceLinkMess,接收公钥,加密密码,发送密码,检查连接结果;交换各自的capabilities

On_event()

调用 Receive_message()

Receive_messages()

在Main Channel建立以后,client开始等待接收server发过来的后续消息,依次处理,调用handle_message()

handle_message()

调用 Generated_client_demarshallers.c::Parse_MainChannel_msg()解析消息

Red_client.cpp

Handle_xxx()

根据消息类型,调用相应的处理handle进行处理,处理诸如:RED_MAIN_INIT = 103

RED_MAIN_CHANNELS_LIST = 104

之类的消息,建立后续的channel

Create_Channel()

建立其他的channel,整个连接过程结束。

Spice代码阅读一:Spice Client 与 Spice Server 通道建立过程的更多相关文章

  1. Redis:安装、配置、操作和简单代码实例(C语言Client端)

    Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...

  2. 图形化代码阅读工具——Scitools Understand

    Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java, ...

  3. Linux-3.0.8 input subsystem代码阅读笔记

    先乱序记录一下阅读Linux input subsystem代码的笔记. 在input device driver的入口代码部分,需要分配并初始化input device结构,内核提供的API是inp ...

  4. 脚本病毒分析扫描专题2-Powershell代码阅读扫盲

    4.2.PowerShell 为了保障木马样本的体积很小利于传播.攻击者会借助宏->WMI->Powershell的方式下载可执行文件恶意代码.最近也经常会遇见利用Powershell通过 ...

  5. 代码阅读分析工具Understand 2.0试用

    Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...

  6. Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码

    我在Android上的代码阅读器用的是 https://github.com/zerob13/CoderBrowserHD 改造的版本,改造后的版本我放在 https://github.com/ghj ...

  7. Linux协议栈代码阅读笔记(二)网络接口的配置

    Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...

  8. [置顶] Linux协议栈代码阅读笔记(一)

    Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...

  9. Python - 关于代码阅读的一些建议

    初始能力 让阅读思路保持清晰连贯,主力关注在流程架构和逻辑实现上,不被语法.技巧和业务流程等频繁地阻碍和打断. 建议基本满足以下条件,再开始进行代码阅读: 具备一定的语言基础:熟悉基础语法,常用的函数 ...

随机推荐

  1. Mysql数据库一个小程序实现自动创建分表。

    每当跨月的时候也是系统出问题最多的时候,没有表和字段缺失是两个最常见的错误. 为了解决这个问题,研究了一下mysql的 information_schema 表: information_schema ...

  2. Objective-C学习篇03—继承

    大纲: 继承的基本概念 自定义初始化方法 便利构造器方法 重写description方法 一 继承基本概念 程序里的对象和"人类"的对象是一样的,高富帅继承了父母,自然就拥有了父母 ...

  3. PHP MySQL 预处理语句

    PHP MySQL 预处理语句 预处理语句对于防止 MySQL 注入是非常有用的. 预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高. 预处理语句的工作原理如下: 预 ...

  4. jquery中$.ajax的$.get与$.post使用

    <script type='text/javascript' src='http://ajax.useso.com/ajax/libs/jquery/1.7.2/jquery.min.js?ve ...

  5. ubuntu用户及用户组文件信息

    1.用户帐号文件 /etc/passwd中存放当前系统的用户列表及用户基本的设置信息: 文件中每一行对应一个用户信息,用户信息用":"来分隔,各项内容含义如下: 用户名:用户密码: ...

  6. Android 多线程:使用Thread和Handler

    当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分 ...

  7. copy(source,destination)拷贝文件

    source 必须 规定要复制的文件 destination 复制文件的目的地 说明 :将文件从 source 拷贝到 destination.如果成功则返回 TRUE,否则返回 FALSE. 例如: ...

  8. VISUAL STUDIO 2005连接MYSQL数据库

    // mysql.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <string.h> #include &l ...

  9. Python自动化运维之19、Paramiko模块和堡垒机实战

    paramiko模块 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实 ...

  10. 在sublimetext上打造一个兼容virtualenv的web&python开发环境

    利用Sublimetext3&virtualenv 打造一个Web&Python IDE 注: 环境:window|python3;以下使用的sublimetext插件均用packag ...