3067e0d917923c24b452945f6edb4cb5b12684b3
[ric-app/hw.git] / src / xapp-asn / e2ap / e2ap_subscription_failure.hpp
1 /*
2  * e2ap_subscription_failure.hpp
3  *
4  *  Created on: Nov 5, 2020
5  *      Author: Shraboni Jana
6  */
7
8 #ifndef SRC_XAPP_ASN_E2AP_E2AP_SUBSCRIPTION_FAILURE_HPP_
9 #define SRC_XAPP_ASN_E2AP_E2AP_SUBSCRIPTION_FAILURE_HPP_
10
11 /*
12  * -- **************************************************************
13 --
14 -- RIC SUBSCRIPTION FAILURE
15 --
16 -- **************************************************************
17 RICsubscriptionFailure ::= SEQUENCE {
18         protocolIEs                                     ProtocolIE-Container    {{RICsubscriptionFailure-IEs}},
19         ...
20 }
21
22 RICsubscriptionFailure-IEs E2AP-PROTOCOL-IES ::= {
23         { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory      }|
24         { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory      }|
25         { ID id-RICactions-NotAdmitted          CRITICALITY reject      TYPE RICaction-NotAdmitted-List         PRESENCE mandatory      }|
26         { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional       },
27         ...
28 }
29  */
30
31 #include <mdclog/mdclog.h>
32 #include <vector>
33 #include <iostream>
34 #include <sstream>
35 #include <memory>
36 #include <E2AP-PDU.h>
37 #include <UnsuccessfulOutcome.h>
38 #include <ProtocolIE-Field.h>
39 #include <ProcedureCode.h>
40 #include <CriticalityDiagnostics.h>
41 #include <CriticalityDiagnostics-IE-Item.h>
42 #include <CriticalityDiagnostics-IE-List.h>
43 #include "e2ap_consts.hpp"
44 #include "e2ap_action.hpp"
45 #include "e2ap_criticality_diagnostics.hpp"
46 class E2APSubscriptionFailure {
47 public:
48
49         class SubscriptionFailureIEs{
50                 private:
51                          long int ricRequestorID, ricInstanceID, ranFunctionID;
52                          RICactionNotAdmittedList *ricActionNotAdmittedlst;
53                          bool is_ricActionNotAdmitlst;
54                          E2APCriticalityDiagnostics *critical_diagnostic;
55                          bool is_criticality_diagnostic;
56                 public:
57                          SubscriptionFailureIEs(void):ricRequestorID(0), ricInstanceID(0),ranFunctionID(0),ricActionNotAdmittedlst(0),is_ricActionNotAdmitlst(false),critical_diagnostic(NULL), is_criticality_diagnostic(false){};
58
59                          SubscriptionFailureIEs& set_ricRequestorID(long int req_id){ricRequestorID = req_id; return *this;};
60                          SubscriptionFailureIEs& set_ranFunctionID(long int func_id){ranFunctionID = func_id; return *this;};
61                          SubscriptionFailureIEs& set_ricInstanceID(long int inst_id){ricInstanceID = inst_id; return *this;};
62                          SubscriptionFailureIEs& set_actionsNotAdmitted_list(RICactionNotAdmittedList &lstobj){ricActionNotAdmittedlst= &lstobj; is_ricActionNotAdmitlst = true; return *this;};
63                          SubscriptionFailureIEs& set_critical_diagnostic(E2APCriticalityDiagnostics &obj){this->is_criticality_diagnostic = true; critical_diagnostic = &obj; return *this;};
64
65                          long int get_ricInstanceID(){return this->ricInstanceID;};
66                          long int get_ricRequestorID(){return this->ricRequestorID;};
67                          long int get_ranFunctionID(){return this->ranFunctionID;};
68                          bool get_is_ricActionNotAdmitlst(){return this->is_ricActionNotAdmitlst;};
69                          RICactionNotAdmittedList& get_actionsNotAdmitted_list()  {return *(this->ricActionNotAdmittedlst);};
70                          E2APCriticalityDiagnostics* get_critical_diagnostic(){return (this->critical_diagnostic);};
71                          bool get_is_criticality_diagnostic(){return this->is_criticality_diagnostic;}
72         };
73
74         E2APSubscriptionFailure(SubscriptionFailureIEs&);
75         E2APSubscriptionFailure(unsigned char *, size_t *);
76         ~E2APSubscriptionFailure();
77         bool encode(unsigned char *, size_t * );
78         bool decode(unsigned char*, size_t *);
79         std::string  get_error (void) const {return _error_string ;};
80         SubscriptionFailureIEs& getIEs(){ return *_failureIEs.get();};
81
82
83 private:
84
85         bool setfields(UnsuccessfulOutcome_t *);
86
87         UnsuccessfulOutcome_t * _unsuccessMsg;
88         E2AP_PDU_t * _e2ap_pdu_obj;
89         RICsubscriptionFailure_IEs_t * IE_array;
90         RICaction_NotAdmitted_ItemIEs_t * ie_not_admitted_list;
91
92         RICactionNotAdmittedList _notadmitlst;
93         E2APCriticalityDiagnostics _cdWrapperIEs;
94         std::unique_ptr<SubscriptionFailureIEs> _failureIEs;
95         CriticalityDiagnostics_IE_Item_t *CD_array;
96
97
98         std::string _error_string;
99     char _errbuf[ERR_LEN];
100         size_t _errbuf_len = ERR_LEN;
101
102 };
103
104
105
106 #endif /* SRC_XAPP_ASN_E2AP_E2AP_SUBSCRIPTION_FAILURE_HPP_ */