2 ==================================================================================
3 Copyright (c) 2018-2019 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,
37 #include "generic_helpers.hpp"
40 // Note : if no action definition specified, octet length of action definition is NULL
41 // If no subsequent action specified, default is subsequent_action = 0, time to wait is 0
46 Action(int id, int type): _is_def(false), _is_subs_act(false), _id(id), _type(type), _next_action(0), _wait(0){};
47 Action(int id, int type, const void *def, size_t def_size, int next, int wait): _is_def(false), _is_subs_act(false), _id(id), _type(type){
51 _action_definition.set_ref(def);
52 _action_definition.set_size(def_size);
55 if(next >= 0 && wait >= 0){
67 int get_type() const {
72 const void * get_definition(void ) {
73 return _action_definition.get_ref();
76 int get_definition_size(void) const {
77 return _action_definition.get_size();
81 int get_subsequent_action() const {
85 int get_wait() const {
89 bool is_definition() const{
94 bool is_subsequent_action() const{
102 int _id, _type, _next_action, _wait, _cause, _sub_cause;
104 octet_helper _action_definition;
110 Helper class that stores subscription data
114 struct subscription_helper {
118 using action_t = std::vector<Action>;
120 subscription_helper(){
121 _action_ref = std::make_unique<action_t>();
125 action_t * get_list() const {return _action_ref.get();};
128 _action_ref.get()->clear();
131 void set_request(int id, int seq_no){
133 _req_seq_no = seq_no;
137 void set_function_id(int id){
141 void set_event_def(const void *ref, size_t size){
142 _event_def.set_ref(ref);
143 _event_def.set_size(size);
147 void add_action(int id, int type){
149 _action_ref.get()->push_back(a);
152 void add_action(int id, int type, std::string action_def, int next_action, int wait_time){
153 Action a (id, type, action_def.c_str(), action_def.length(), next_action, wait_time);
154 _action_ref.get()->push_back(a);
158 int get_request_id(void) const{
162 int get_req_seq(void) const {
166 int get_function_id(void) const{
170 const void * get_event_def(void) {
171 return _event_def.get_ref();
174 int get_event_def_size(void) const {
175 return _event_def.get_size();
178 void print_sub_info(void){
179 std::cout <<"Request ID = " << _req_id << std::endl;
180 std::cout <<"Request Sequence Number = " << _req_seq_no << std::endl;
181 std::cout <<"RAN Function ID = " << _func_id << std::endl;
182 for(auto const & e: *(_action_ref.get())){
183 std::cout <<"Action ID = " << e.get_id() << " Action Type = " << e.get_type() << std::endl;
189 std::unique_ptr<action_t> _action_ref;
191 int _req_id, _req_seq_no, _func_id;
192 octet_helper _event_def;