Spice代码阅读一:Spice Client 与 Spice Server 通道建立过程
文件 |
方法 |
描述 |
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 通道建立过程的更多相关文章
- Redis:安装、配置、操作和简单代码实例(C语言Client端)
Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...
- 图形化代码阅读工具——Scitools Understand
Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java, ...
- Linux-3.0.8 input subsystem代码阅读笔记
先乱序记录一下阅读Linux input subsystem代码的笔记. 在input device driver的入口代码部分,需要分配并初始化input device结构,内核提供的API是inp ...
- 脚本病毒分析扫描专题2-Powershell代码阅读扫盲
4.2.PowerShell 为了保障木马样本的体积很小利于传播.攻击者会借助宏->WMI->Powershell的方式下载可执行文件恶意代码.最近也经常会遇见利用Powershell通过 ...
- 代码阅读分析工具Understand 2.0试用
Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...
- Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码
我在Android上的代码阅读器用的是 https://github.com/zerob13/CoderBrowserHD 改造的版本,改造后的版本我放在 https://github.com/ghj ...
- Linux协议栈代码阅读笔记(二)网络接口的配置
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...
- [置顶] Linux协议栈代码阅读笔记(一)
Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...
- Python - 关于代码阅读的一些建议
初始能力 让阅读思路保持清晰连贯,主力关注在流程架构和逻辑实现上,不被语法.技巧和业务流程等频繁地阻碍和打断. 建议基本满足以下条件,再开始进行代码阅读: 具备一定的语言基础:熟悉基础语法,常用的函数 ...
随机推荐
- haproxy主配置文件
1.haproxy 配置文件 ------------------------------------------------------------------------------------- ...
- OD: Windows Driver Fuzz
内核 FUZZ 思路 内核 API 函数:是提供给 Ring3 调用,在 Ring0 完成最终功能的函数.这些函数接收 Ring3 传入的参数,如果处理参数的过程存在问题的话,很有可能成为一个内核漏 ...
- 简单html以及css的用法
我将利用三天的时间来完成制作京东首页的静态页面效果,其中包含的内容有html以及css. 1.在开发进行之前,首先要配置开发环境:我们需要安装sublime webstorm vscode Hb ...
- call, apply, bind作用
call, apply作用就是(改变方法中的this指向)借用别人的方法来调用,就像调用自己的一样 function Person(name) { this.name = name; } Person ...
- 关于模板中的动态取值 ---反射与javascript脚本编译
在项目中经常遇到一个问题,打印word或者打印excel的时候,我们经常使用一对一的赋值或者批量替换的方式来对模板进行修改. 但是现在遇到两种场景: 1.取值是通过自定以方法进行取值的. 如:一个销售 ...
- 【OpenSSL】创建证书
[-] 1生成根证书 1 生成RSA私钥 2 生成证书请求 3 签发自签名证书 2 生成用户证书 1 生成RSA私钥 2 生成证书请求 3 签发证书 1)生成根证书 1.1) 生成RSA私钥 op ...
- php小知识点
1.字符串可以里面的字符可以像数组一样访问,比如$s = "123";$s[1]就等于2,如果字符串为中文则会乱码,需要使用mb_substr进行截取: 2.php中的单引号(' ...
- golang io需要牢记的几个点
对于Reader比较麻烦需要记住以下: When Read encounters an error or end-of-file condition after successfully readin ...
- 支持mdev的init脚本片断
mount -t tmpfs mdev /dev mount -t sysfs sysfs /sys mkdir /dev/pts mount -t devpts devpts /dev/pts ec ...
- 如何使一个你没有源代码的DLL文件变为强命名的DLL
转载: 有时候你会需要一个DLL是强命名的,比如你想把这个文件放到GAC里面.如果这是一个第三方的DLL,你没有源代码,这会是一件比较麻烦的事情.有一个方法可以解决这个问题. 在VS.NET的命名行窗 ...