16#if LIBE3_ENABLE_PROTOBUF
24constexpr const char* LOG_TAG =
"EncoderFactory";
30 const char* enable_flag;
36 return {
"ASN.1",
"LIBE3_ENABLE_ASN1"};
38 return {
"JSON",
"LIBE3_ENABLE_JSON"};
40 return {
"Protocol Buffers",
"LIBE3_ENABLE_PROTOBUF"};
42 return {
"unknown",
nullptr};
50 return std::make_unique<Asn1E3Encoder>();
54 return std::make_unique<JsonE3Encoder>();
56#if LIBE3_ENABLE_PROTOBUF
58 return std::make_unique<ProtobufE3Encoder>();
66 const EncodingInfo info = encoding_info(format);
67 if (info.enable_flag) {
69 <<
"Encoding format " << info.name
70 <<
" requested but not compiled into this libe3 build; rebuild with -D"
71 << info.enable_flag <<
"=ON";
73 E3_LOG_ERROR(LOG_TAG) <<
"Unknown encoding format requested: "
74 <<
static_cast<unsigned>(format);
ASN.1 APER Encoder for E3AP PDUs.
Abstract E3 Encoder interface for PDU encoding/decoding.
JSON Encoder for E3AP PDUs.
Logging facility for libe3.
#define E3_LOG_ERROR(component)
std::unique_ptr< E3Encoder > create_encoder(EncodingFormat format)
Factory function to create appropriate encoder.
EncodingFormat
E3AP encoding formats supported by the library.
@ JSON
JSON encoding (for development/debugging).
@ ASN1
ASN.1 PER encoding (standard O-RAN format).
@ PROTOBUF
Protocol Buffers encoding.
Protocol Buffers encoder for E3AP PDUs.