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