Извините, что не объяснил мой вопрос достаточно хорошо.
Я пытался получить доступ к полученным данным 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}}
Любая идея, как я могу получить доступ к данным в качестве глобальной переменной.