• 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,整个连接过程结束。

  • 相关阅读:
    java 泛型
    数据结构与算法分析java——线性表1
    常见链表题
    网络面试题集锦
    java 网络流 TCP/UDP
    java文件
    java IO流——字节流
    java IO流——字符流
    java集合框架——工具类
    java集合框架——Map
  • 原文地址:https://www.cnblogs.com/riskyer/p/3236848.html
Copyright © 2020-2023  润新知