E2 reset request message model
[ric-plt/e2mgr.git] / E2Manager / models / e2_reset_response.go
index 846bf70..2722e56 100644 (file)
@@ -23,39 +23,69 @@ import (
 )
 
 type E2ResetResponseMessage struct {
-       XMLName xml.Name `xml:"E2ResetRequestMessage"`
+       XMLName xml.Name `xml:"E2ResetSuccessResponseMessage"`
        Text    string   `xml:",chardata"`
-       E2APPDU struct {
-               XMLName           xml.Name `xml:"E2AP-PDU"`
-               Text              string   `xml:",chardata"`
-               SuccessfulOutcome struct {
-                       Text          string `xml:",chardata"`
-                       ProcedureCode string `xml:"procedureCode"`
-                       Criticality   struct {
-                               Text   string `xml:",chardata"`
-                               Ignore string `xml:"ignore"`
-                       } `xml:"criticality"`
-                       Value struct {
-                               Text          string `xml:",chardata"`
-                               ResetResponse struct {
-                                       Text        string `xml:",chardata"`
-                                       ProtocolIEs struct {
-                                               Text             string `xml:",chardata"`
-                                               ResetResponseIEs []struct {
-                                                       Text        string `xml:",chardata"`
-                                                       ID          string `xml:"id"`
-                                                       Criticality struct {
-                                                               Text   string `xml:",chardata"`
-                                                               Ignore string `xml:"ignore"`
-                                                       } `xml:"criticality"`
-                                                       Value struct {
-                                                               Text          string `xml:",chardata"`
-                                                               TransactionID string `xml:"TransactionID"`
-                                                       } `xml:"value"`
-                                               } `xml:"ResetResponseIEs"`
-                                       } `xml:"protocolIEs"`
-                               } `xml:"ResetResponse"`
-                       } `xml:"value"`
-               } `xml:"successfulOutcome"`
-       } `xml:"E2AP-PDU"`
+       E2ApPdu E2ApPdu  `xml:"E2AP-PDU"`
+}
+
+type E2ApPdu struct {
+       XMLName           xml.Name          `xml:"E2AP-PDU"`
+       Text              string            `xml:",chardata"`
+       SuccessfulOutcome successfulOutcome `xml:"successfulOutcome"`
+}
+
+type successfulOutcome struct {
+       XMLName       xml.Name `xml:"successfulOutcome"`
+       Text          string   `xml:",chardata"`
+       ProcedureCode string   `xml:"procedureCode"`
+       Criticality   struct {
+               Text   string `xml:",chardata"`
+               Reject string `xml:"reject"`
+       } `xml:"criticality"`
+       Value SuccessfulOutcomeValue `xml:"value"`
+}
+
+type Criticality struct {
+       Ignore string `xml:"ignore"`
+}
+
+type SuccessfulOutcomeValue struct {
+       Text          string        `xml:",chardata"`
+       ResetResponse ResetResponse `xml:"ResetResponse"`
+}
+
+type ResetResponse struct {
+       Text        string      `xml:",chardata"`
+       ProtocolIEs ProtocolIEs `xml:"protocolIEs"`
+}
+
+type ProtocolIEs struct {
+       Text             string             `xml:",chardata"`
+       ResetResponseIEs []ResetResponseIEs `xml:"ResetResponseIEs"`
+}
+
+type ResetResponseIEs struct {
+       Text        string                `xml:",chardata"`
+       ID          string                `xml:"id"`
+       Criticality Criticality           `xml:"criticality"`
+       Value       ResetResponseIEsValue `xml:"value"`
+}
+
+type ResetResponseIEsValue struct {
+       TransactionID string `xml:"TransactionID"`
+}
+
+func NewE2ResetResponseMessage(request *E2ResetRequestMessage) E2ResetResponseMessage {
+       outcome := successfulOutcome{}
+       outcome.ProcedureCode = string(request.E2ApPDU.InitiatingMessage.ProcedureCode)
+       e2ResetRequestIes := request.E2ApPDU.InitiatingMessage.Value.E2ResetRequest.ProtocolIes.ResetRequestIEs
+       numOfIes := len(e2ResetRequestIes)
+
+       outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs = make([]ResetResponseIEs, numOfIes)
+       for ieCount := 0; ieCount < numOfIes; ieCount++ {
+               outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs[ieCount].ID = string(request.E2ApPDU.InitiatingMessage.Value.E2ResetRequest.ProtocolIes.ResetRequestIEs[ieCount].ID)
+               outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs[ieCount].Criticality.Ignore = request.E2ApPDU.InitiatingMessage.Value.E2ResetRequest.ProtocolIes.ResetRequestIEs[ieCount].Criticality.Ignore
+               outcome.Value.ResetResponse.ProtocolIEs.ResetResponseIEs[ieCount].Value.TransactionID = string(*(request.E2ApPDU.InitiatingMessage.Value.E2ResetRequest.ProtocolIes.ResetRequestIEs[ieCount].Value.TransactionID))
+       }
+       return E2ResetResponseMessage{E2ApPdu: E2ApPdu{SuccessfulOutcome: outcome}}
 }