Как получить доступ к AVP полученных данных в основной функции - PullRequest
0 голосов
/ 02 июля 2019

Извините, что не объяснил мой вопрос достаточно хорошо. Я пытался получить доступ к полученным данным AVP и использовать их в функции обработчика сообщений диаметра handlePLA в своей основной функции, но не получил никакого вывода. Я попытался получить к нему глобальный доступ

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)

}

Однако fmt.Println (pla) в функции возврата HandlePLA выдает ожидаемые данные, но fmt.Println (loc) в main не дает никакого результата.

{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}}

Любая идея, как я могу получить доступ к данным в качестве глобальной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...