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,整個連接過程結束。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章