tr069 消息类型 (message type)

发布时间: 2023-04-26 20:33:28 作者: 大象笔记

tr069 是基于 SOAP 的 RPC 协议。

message type 可以理解为每个 RPC 的方法名。

这里有趣的地方是,既然是远程调用,那么就存在两种情况:

ACS 调用 CPE 的方法列表

CPE 调用 ACS 的方法列表

TeamsACS 中打印当前收到的 Message 的 Type

tr069/handlers.go

func (s *Tr069Server) Tr069Index(c echo.Context) error {
	...

	// 打印 message type
	// [2023-04-26T20:20:28+08:00]     DEBUG   tr069/handlers.go:166   msg name: Inform
	log.Debugf("msg name: %s", msg.GetName())

	switch msg.GetName() {
	case "Inform":
		log.Info2("recv inform message",
			zap.String("namespace", "tr069"),
			zap.String("msgid", msg.GetID()),
			zap.String("msgtype", msg.GetName()),
			zap.String("ipaddr", c.RealIP()),
			zap.String("metrics", app.MetricsTr069Inform),
		)
		return s.processInform(c, lastInform, msg)
	case "TransferComplete":
		return s.processTransferComplete(c, msg)
	case ...

TeamsACS 中 Message 的实现

以 Inform 类型为例:

common/cwmp/Inform.go

里面定义了 Inform 的 Struct 及各种方法 (CreateXML, Parse, GetName 等)。

参考

我是一名山东烟台的开发者,联系作者