如何在主要功能中访问AVP接收的数据

时间:2019-07-02 13:09:32

标签: go

很抱歉,我的问题解释得不够好。 我一直试图在我的主要功能的直径消息处理程序功能handlePLA中访问和使用接收到的AVP数据,但没有输出。 我尝试通过

全局访问它
type PLAAnswer struct {
    SessionID             datatype.UTF8String       `avp:"Session-Id"`
    OriginHost            datatype.DiameterIdentity `avp:"Origin-Host"`
    OriginRealm           datatype.DiameterIdentity `avp:"Origin-Realm"`
    DestinationHost       datatype.DiameterIdentity `avp:"Destination-Host"`
    DestinationRealm      datatype.DiameterIdentity `avp:"Destination-Realm"`
    ResultCode            datatype.Unsigned32       `avp:"Result-Code"`
    LocationEstimate      datatype.OctetString      `avp:"Location-Estimate"`
    AgeOfLocationEstimate datatype.Unsigned32       `avp:"Age-Of-Location-Estimate"`
}


var loc PLAAnswer


func HandlePLA(done chan PLAAnswer) diam.HandlerFunc {

    return func(c diam.Conn, m *diam.Message) {

        pla := PLAAnswer{}

        if err := m.Unmarshal(&pla); err != nil {
            log.Printf("Failed to decode response message ")
            return
        }
        loc = pla
        fmt.Println(pla) // This print the data
    }

}

主要功能

var loc diameter.PLAAnswer

func main() {

    fmt.Println(loc)

}

但是,HandlePLA返回函数中的fmt.Println(pla)会产生预期的数据,但是主函数中的fmt.Println(loc)不会产生任何结果。

{UTF8String{session;4034522457},Padding:2 DiameterIdentity{server},Padding:2 DiameterIdentity{go-diameter},Padding:1 DiameterIdentity{g
mlc},Padding:0 DiameterIdentity{cumucore-diameter},Padding:3 Unsigned32{2001} OctetString{0x533335c2b033382731352e33372c20573538c2b0343
52732312e3737},Padding:0 Unsigned32{3600}}

任何想法,我如何可以将数据作为全局变量访问。

0 个答案:

没有答案