2 ==================================================================================
3 Copyright (c) 2019-2020 AT&T Intellectual Property.
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
9 http://www.apache.org/licenses/LICENSE-2.0
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16 ==================================================================================
24 Simple structure to store action related information based on E2 v0.22
25 Used for subscription request, response etc
27 ricActionID RICactionID,
28 ricActionType RICactionType,
29 ricActionDefinition RICactionDefinition OPTIONAL,
30 ricSubsequentAction RICsubsequentAction OPTIONAL,
38 #include "generic_helpers.hpp"
41 // Note : if no action definition specified, octet length of action definition is NULL
42 // If no subsequent action specified, default is subsequent_action = 0, time to wait is 0
47 Action(int id, int type): _is_def(false), _is_subs_act(false), _id(id), _type(type), _next_action(0){};
48 Action(int id, int type, const void *def, size_t def_size, int next_action): _is_def(false), _is_subs_act(false), _id(id), _type(type){
51 _action_definition.set_ref(def);
52 _action_definition.set_size(def_size);
54 _next_action = next_action;
63 int get_type() const {
68 const void * get_definition(void ) {
69 return _action_definition.get_ref();
72 int get_definition_size(void) const {
73 return _action_definition.get_size();
77 int get_subsequent_action() const {
81 bool is_definition() const{
86 bool is_subsequent_action() const{
94 int _id, _type, _next_action, _cause, _sub_cause;
96 octet_helper _action_definition;
102 Helper class that stores subscription data
106 struct subscription_helper {
110 using action_t = std::vector<Action>;
111 subscription_helper(){
112 _action_ref = std::make_unique<action_t>();
115 action_t * get_list() const {return _action_ref.get();};
118 _action_ref.get()->clear();
121 void set_request(int id){
126 void set_function_id(int id){
130 void set_event_def(const void *ref, size_t size){
131 _event_def.set_ref(ref);
132 _event_def.set_size(size);
136 void add_action(int id, int type){
138 _action_ref.get()->push_back(a);
141 void add_action(int id, int type, const void *action_def, size_t size, int next_action){
142 Action a (id, type, action_def, size, next_action);
143 _action_ref.get()->push_back(a);
147 int get_request_id(void) const{
152 int get_function_id(void) const{
156 const void * get_event_def(void) {
157 return _event_def.get_ref();
160 int get_event_def_size(void) const {
161 return _event_def.get_size();
164 void print_sub_info(void){
165 std::cout <<"Request ID = " << _req_id << std::endl;
166 std::cout <<"RAN Function ID = " << _func_id << std::endl;
167 for(auto const & e: *(_action_ref.get())){
168 std::cout <<"Action ID = " << e.get_id() << " Action Type = " << e.get_type() << std::endl;
174 std::unique_ptr<action_t> _action_ref;
176 int _req_id, _func_id;
177 octet_helper _event_def;