X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fe2apv1sim%2Fricsim%2Fsrc%2FASN1%2Flib%2Fasn_x2ap_wrapper.hpp;fp=e2sim%2Fe2apv1sim%2Fricsim%2Fsrc%2FASN1%2Flib%2Fasn_x2ap_wrapper.hpp;h=96ea81cd579d2b8a879150b0fb819b73989c7df8;hp=0000000000000000000000000000000000000000;hb=3ebf932d23dcbec9ed19f4a51f9d00a0a54f5124;hpb=6896318f2b4ff01b4a88b16019c3dc93b0b693f5 diff --git a/e2sim/e2apv1sim/ricsim/src/ASN1/lib/asn_x2ap_wrapper.hpp b/e2sim/e2apv1sim/ricsim/src/ASN1/lib/asn_x2ap_wrapper.hpp new file mode 100644 index 0000000..96ea81c --- /dev/null +++ b/e2sim/e2apv1sim/ricsim/src/ASN1/lib/asn_x2ap_wrapper.hpp @@ -0,0 +1,78 @@ +/***************************************************************************** +# * +# 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_X2AP_PDU_WRAPPER_HPP +#define ASN_X2AP_PDU_WRAPPER_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#define X2AP_PDU_DEFAULT_BUFFER_SIZE 4096 + +//Credit: copied from E2-Manager +struct X2APpduWrapper +{ + unsigned char* m_allocation_buffer; + size_t m_allocation_buffer_size; + + X2APpduWrapper(size_t allocation_buffer_size = X2AP_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. + } + } + + ~X2APpduWrapper() + { + if (m_allocation_buffer) + delete[] m_allocation_buffer; + } + + asn::allocator& ref_allocator() { return m_allocator; } + + X2AP_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: + X2AP_PDU m_pdu; + asn::allocator m_allocator; +}; + + +#endif