GLink 架构
核心负责通道状态、命令处理、缓冲区所有权以及客户端通知。传输插件将命令和数据编排为物理传输所需的线路格式。当远端未运行相同的 GLink 实现时,插件还可以对 GLink 命令进行翻译。接收意图提供反压
在对端发送之前,接收端客户端会排队一个接收意图,标明其可接收的最大报文大小。远端 GLink 核心得知有一个合适的缓冲区存在,并在发送数据时选择匹配的意图。意图无需单独的信用协议即可提供反压。它们还允许基于拷贝的传输在物理传送开始之前保留空间或分配接收缓冲区。客户端可以排队多个意图,发送方使用第一个合适的意图。通道生命周期
打开通道时指定传输、远端边(edge)和通道名称。只有在远端接受打开请求并且客户端收到已连接通知后,通道才可使用。 主要的状态通知包括:- Connected(已连接)—— 两端完成通道建立。
- Local disconnected(本地断开)—— 本地客户端请求关闭且清理完成。
- Remote disconnected(远端断开)—— 远端率先关闭了通道。
协商与传输选择
当一条传输启动时,两端会协商兼容的协议版本和特性集。每一端从其支持的最高版本开始,交换版本命令和确认,并在对端支持较少时降级选择。所选版本的特性标志会被协商,通常是取双方支持特性的交集。 只有当两端的协商序列均完成之后,传输才被视为打开。GLink 还可以根据传输优先级和可选的客户端选择信息,为某条 edge 选择最合适的可用传输。缓冲区所有权
所有权跟随异步操作进行流转:- 接收端 GLink 拥有已排队的意图,直到其可用于一次传输。
- 发送端客户端提交数据。
- 接收端客户端处理缓冲区并发出完成信号。
- 发送端收到通知,可复用或释放其发送状态。

