42d83ce151b303a614b8f259c180d711cc385036
[ric-plt/e2mgr.git] / E2Manager / models / e2_reset_response.go
1 //
2 // Copyright 2022 Samsung Electronics Co.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15
16 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
17 //  platform project (RICP).
18
19 package models
20
21 import (
22         "encoding/xml"
23 )
24
25 type E2ResetResponseMessage struct {
26         XMLName xml.Name `xml:"E2ResetSuccessResponseMessage"`
27         Text    string   `xml:",chardata"`
28         E2ApPdu E2ApPdu  `xml:"E2AP-PDU"`
29 }
30
31 type E2ApPdu struct {
32         XMLName           xml.Name          `xml:"E2AP-PDU"`
33         Text              string            `xml:",chardata"`
34         SuccessfulOutcome successfulOutcome `xml:"successfulOutcome"`
35 }
36
37 type successfulOutcome struct {
38         XMLName       xml.Name `xml:"successfulOutcome"`
39         Text          string   `xml:",chardata"`
40         ProcedureCode string   `xml:"procedureCode"`
41         Criticality   struct {
42                 Text   string `xml:",chardata"`
43                 Reject string `xml:"reject"`
44         } `xml:"criticality"`
45         Value SuccessfulOutcomeValue `xml:"value"`
46 }
47
48 type Criticality struct {
49         Ignore string `xml:"ignore"`
50 }
51
52 type SuccessfulOutcomeValue struct {
53         Text          string        `xml:",chardata"`
54         ResetResponse ResetResponse `xml:"ResetResponse"`
55 }
56
57 type ResetResponse struct {
58         Text        string      `xml:",chardata"`
59         ProtocolIEs ProtocolIEs `xml:"protocolIEs"`
60 }
61
62 type ProtocolIEs struct {
63         Text             string             `xml:",chardata"`
64         ResetResponseIEs []ResetResponseIEs `xml:"ResetResponseIEs"`
65 }
66
67 type ResetResponseIEs struct {
68         Text        string                `xml:",chardata"`
69         ID          string                `xml:"id"`
70         Criticality Criticality           `xml:"criticality"`
71         Value       ResetResponseIEsValue `xml:"value"`
72 }
73
74 type ResetResponseIEsValue struct {
75         TransactionID string `xml:"TransactionID"`
76 }
77
78 func NewE2ResetResponseMessage(request *E2ResetRequestMessage) E2ResetResponseMessage {
79         outcome := successfulOutcome{}
80         outcome.ProcedureCode = request.E2APPDU.InitiatingMessage.ProcedureCode
81         e2ResetRequestIes := request.E2APPDU.InitiatingMessage.Value.ResetRequest.ProtocolIEs.ResetRequestIEs
82         numOfIes := len(e2ResetRequestIes)
83
84         outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs = make([]ResetResponseIEs, numOfIes)
85         for ieCount := 0; ieCount < numOfIes; ieCount++ {
86                 outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs[ieCount].ID = request.E2APPDU.InitiatingMessage.Value.ResetRequest.ProtocolIEs.ResetRequestIEs[ieCount].ID
87                 outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs[ieCount].Criticality.Ignore = request.E2APPDU.InitiatingMessage.Value.ResetRequest.ProtocolIEs.ResetRequestIEs[ieCount].Criticality.Ignore
88                 outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs[ieCount].Value.TransactionID = request.E2APPDU.InitiatingMessage.Value.ResetRequest.ProtocolIEs.ResetRequestIEs[ieCount].Value.TransactionID
89         }
90         return E2ResetResponseMessage{E2ApPdu: E2ApPdu{SuccessfulOutcome: outcome}}
91 }