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,
34 #include <generic_helpers.hpp>
43 Action(int id, int type): _is_def(false), _is_subs_act(false), _id(id), _type(type){};
44 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){
48 _action_definition.set_ref(def);
49 _action_definition.set_size(def_size);
52 if(next >= 0 && wait >= 0){
64 int get_type() const {
69 const void * get_definition(void ) {
70 return _action_definition.get_ref();
73 int get_definition_size(void) const {
74 return _action_definition.get_size();
78 int get_subsequent_action() const {
82 int get_wait() const {
86 bool is_definition() const{
91 bool is_subsequent_action() const{
99 int _id, _type, _next_action, _wait, _cause, _sub_cause;
101 octet_helper _action_definition;
107 Helper class that stores subscription data
111 struct subscription_helper {
115 using action_t = std::vector<Action>;
117 subscription_helper(){
118 _action_ref = std::make_unique<action_t>();
122 action_t * get_list() const {return _action_ref.get();};
125 _action_ref.get()->clear();
128 void set_request(int id, int seq_no){
130 _req_seq_no = seq_no;
134 void set_function_id(int id){
138 void set_event_def(const void *ref, size_t size){
139 _event_def.set_ref(ref);
140 _event_def.set_size(size);
144 void add_action(int id, int type){
146 _action_ref.get()->push_back(a);
149 void add_action(int id, int type, std::string action_def, int next_action, int wait_time){
150 Action a (id, type, action_def.c_str(), action_def.length(), next_action, wait_time);
151 _action_ref.get()->push_back(a);
155 int get_request_id(void) const{
159 int get_req_seq(void) const {
163 int get_function_id(void) const{
167 const void * get_event_def(void) {
168 return _event_def.get_ref();
171 int get_event_def_size(void) const {
172 return _event_def.get_size();
175 void print_sub_info(void){
176 std::cout <<"Request ID = " << _req_id << std::endl;
177 std::cout <<"Request Sequence Number = " << _req_seq_no << std::endl;
178 std::cout <<"RAN Function ID = " << _func_id << std::endl;
179 for(auto const & e: *(_action_ref.get())){
180 std::cout <<"Action ID = " << e.get_id() << " Action Type = " << e.get_type() << std::endl;
186 std::unique_ptr<action_t> _action_ref;
188 int _req_id, _req_seq_no, _func_id;
189 octet_helper _event_def;