1
0
Files
omc_api/lib/core/mml_client/send.go
2023-10-10 10:56:44 +08:00

105 lines
2.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package mmlclient
import (
"fmt"
"strings"
)
// 发送MML原始消息
// ip 网元IP地址
// msg 指令
func MMLSendMsg(ip, msg string) (string, error) {
// 创建MMLClient实例
client, err := NewMMLClient(ip)
if err != nil {
return "", fmt.Errorf("创建MMLClient实例失败%v", err)
}
defer client.Close()
// 发送数据
err = client.Send(msg)
if err != nil {
return "", fmt.Errorf("发送数据失败:%v", err)
}
// 接收数据
data, err := client.Receive()
if err != nil {
return "", fmt.Errorf("接收数据失败:%v", err)
}
return data, nil
}
// 发送MML
// ip 网元IP地址
// msg 指令
func MMLSendMsgToString(ip, msg string) (string, error) {
// 发送获取数据
str, err := MMLSendMsg(ip, msg)
if err != nil {
return "", err
}
// 截断
index := strings.Index(str, "\n")
if index != -1 {
str = str[:index]
str = strings.ToLower(str)
}
// 命令成功
if strings.Contains(str, "ok") || strings.Contains(str, "OK") {
return str, nil
}
return "", fmt.Errorf(str)
}
// 发送MML
// ip 网元IP地址
// msg 指令
func MMLSendMsgToMap(ip, msg string) (map[string]string, error) {
// 发送获取数据
str, err := MMLSendMsg(ip, msg)
if err != nil {
return nil, err
}
// 无数据
if strings.HasPrefix(str, "No Auth Data") {
return nil, fmt.Errorf("no auth data")
}
// 初始化一个map用于存储拆分后的键值对
m := make(map[string]string)
var items []string
if strings.Contains(str, "\r\n") {
// 按照分隔符"\r\n"进行拆分
items = strings.Split(str, "\r\n")
} else if strings.Contains(str, "\n") {
// 按照分隔符"\n"进行拆分
items = strings.Split(str, "\n")
}
// 遍历拆分后的结果
for _, item := range items {
var pair []string
if strings.Contains(item, "=") {
// 按照分隔符"="进行拆分键值对
pair = strings.Split(item, "=")
} else if strings.Contains(item, ":") {
// 按照分隔符":"进行拆分键值对
pair = strings.Split(item, ":")
}
if len(pair) == 2 {
// 将键值对存入map中
m[pair[0]] = pair[1]
}
}
return m, err
}