文件 | 方法 | 描述 |
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,整个连接过程结束。 |