X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fe2apv1sim%2Fsrc%2FASN1%2Flib%2Fasn_e2ap_wrapper.hpp;fp=e2sim%2Fe2apv1sim%2Fsrc%2FASN1%2Flib%2Fasn_e2ap_wrapper.hpp;h=38704e8af2789e81d0cceec232a0952a373bee67;hp=0000000000000000000000000000000000000000;hb=0eba05c4ff0c99974d3f3a63b65cbe2adb209e51;hpb=c380e183231711cf9f8bc72d0eb52e532dd07085 diff --git a/e2sim/e2apv1sim/src/ASN1/lib/asn_e2ap_wrapper.hpp b/e2sim/e2apv1sim/src/ASN1/lib/asn_e2ap_wrapper.hpp new file mode 100644 index 0000000..38704e8 --- /dev/null +++ b/e2sim/e2apv1sim/src/ASN1/lib/asn_e2ap_wrapper.hpp @@ -0,0 +1,85 @@ +/***************************************************************************** +# * +# Copyright 2019 AT&T Intellectual Property * +# Copyright 2019 Nokia * +# * +# Licensed under the Apache License, Version 2.0 (the "License"); * +# you may not use this file except in compliance with the License. * +# You may obtain a copy of the License at * +# * +# http://www.apache.org/licenses/LICENSE-2.0 * +# * +# Unless required by applicable law or agreed to in writing, software * +# distributed under the License is distributed on an "AS IS" BASIS, * +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * +# See the License for the specific language governing permissions and * +# limitations under the License. * +# * +******************************************************************************/ +#ifndef ASN_E2AP_PDU_WRAPPER_HPP +#define ASN_E2AP_PDU_WRAPPER_HPP + +#include +#include +#include + +// #include + +// #include +// #include +// #include +// #include +// #include + +#include +// #include +#include +#include +#include + +#define E2AP_PDU_DEFAULT_BUFFER_SIZE 4096 + +//Credit: copied from E2-Manager +struct E2APpduWrapper +{ + unsigned char* m_allocation_buffer; + size_t m_allocation_buffer_size; + + E2APpduWrapper(size_t allocation_buffer_size = E2AP_PDU_DEFAULT_BUFFER_SIZE) + { + m_allocation_buffer_size = allocation_buffer_size; + m_allocation_buffer = 0; + if (allocation_buffer_size) { + m_allocation_buffer = + new (std::nothrow) unsigned char[allocation_buffer_size]; + m_allocator.reset( + m_allocation_buffer, + m_allocation_buffer_size); // initialized correctly on + // allocation failure. + } + } + + ~E2APpduWrapper() + { + if (m_allocation_buffer) + delete[] m_allocation_buffer; + } + + asn::allocator& ref_allocator() { return m_allocator; } + + E2AP_PDU& ref_pdu() { return m_pdu; } + + // reset pdu and allocation buffer. Allows reusing. + void clear() + { + m_pdu.clear(); + m_allocator.reset(m_allocation_buffer, m_allocation_buffer_size); + } + + private: + E2AP_PDU m_pdu; + asn::allocator m_allocator; +}; + + +#endif