dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/models/transmission.go (about) 1 // 2 // Copyright (C) 2021 IOTech Ltd 3 // 4 // SPDX-License-Identifier: Apache-2.0 5 6 package models 7 8 import ( 9 "encoding/json" 10 11 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/errors" 12 ) 13 14 type Transmission struct { 15 Created int64 16 Id string 17 Channel Address 18 NotificationId string 19 SubscriptionName string 20 Records []TransmissionRecord 21 ResendCount int 22 Status TransmissionStatus 23 } 24 25 func (trans *Transmission) UnmarshalJSON(b []byte) error { 26 var alias struct { 27 Created int64 28 Id string 29 Channel interface{} 30 NotificationId string 31 SubscriptionName string 32 Records []TransmissionRecord 33 ResendCount int 34 Status TransmissionStatus 35 } 36 if err := json.Unmarshal(b, &alias); err != nil { 37 return errors.NewCommonEdgeX(errors.KindContractInvalid, "Failed to unmarshal transmission.", err) 38 } 39 40 channel, err := instantiateAddress(alias.Channel) 41 if err != nil { 42 return errors.NewCommonEdgeXWrapper(err) 43 } 44 45 *trans = Transmission{ 46 Created: alias.Created, 47 Id: alias.Id, 48 Channel: channel, 49 NotificationId: alias.NotificationId, 50 SubscriptionName: alias.SubscriptionName, 51 Records: alias.Records, 52 ResendCount: alias.ResendCount, 53 Status: alias.Status, 54 } 55 return nil 56 } 57 58 // NewTransmission create transmission model with required fields 59 func NewTransmission(subscriptionName string, channel Address, notificationId string) Transmission { 60 return Transmission{ 61 SubscriptionName: subscriptionName, 62 Channel: channel, 63 NotificationId: notificationId, 64 } 65 } 66 67 // TransmissionStatus indicates the most recent success/failure of a given transmission attempt. 68 type TransmissionStatus string