「连载」边缘计算(二十六)03-06:边缘部分源码(源码分析篇)

(接上篇)

获取cloudhub client,具体如下所示。

cloudHubClient, err := clients.GetClient(ehc.config.Protocol, config.GetConfig())

clients.GetClient()函数定义具体如下所示:

KubeEdge/edge/pkg/edgehub/factory.go

//GetClient returns an Adapter object with new web socket

func GetClient(clientType string, config *config.EdgeHubConfig) (Adapter, error) {

switch clientType {

case ClientTypeWebSocket:

websocketConf := wsclient.WebSocketConfig{

...

}

return wsclient.NewWebSocketClient(&websocketConf), nil

case ClientTypeQuic:

quicConfig := quicclient.QuicConfig{

...

}

return quicclient.NewQuicClient(&quicConfig), nil

default:

klog.Errorf("Client type: %s is not supported", clientType)

}

return nil, ErrorWrongClientType

}

GetClient()函数定义可以知道,该函数定义了ClientTypeWebSocketClientTypeQuic两种client类型,两者都实现了Adapter interface。遇到Adapter类型的client变量时,记得对应此处的ClientTypeWebSocketClientTypeQuic

 cloud client初始化,具体如下所示。

err = ehc.chClient.Init()

ehc.chClient.Init()函数对应获取cloudhub client中ClientTypeWebSocketClientTypeQuic的Init()方法。

EdgeCore各模块广播已经连接成功的消息,具体如下所示。

// execute hook func after connect

ehc.pubConnectInfo(true)

将从cloud部分收到的消息转发给指定edge部分的指定模块,具体如下所示。

go ehc.routeToEdge()

将从edge部分的消息转发给cloud部分,具体如下所示。

go ehc.routeToCloud()

向cloud部分发送心跳信息,具体如下所示。

go ehc.keepalive()

剩下的步骤都是在edgehub模块退出时的一些清理操作。

到此,EdgeCore组件的edgehub模块的剖析就结束了。

未完待续……  

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值