Verified Commit a32749fd authored by Thomas Braun's avatar Thomas Braun Committed by Thomas Ives
Browse files

treewide: Do not undef interface in headers

The Windows COM API defines an interface macro as an additional
keyword[1].

Historically, we have undefined this macro as we use the word
interface for a couple of member variables.

We should probably not be undef'ing this in our headers as it isn't very
polite (even if defining this macro in the first place is also not
polite).  On the off chance that someone wants to use COM API and Tango
we should not be doing this really.

Instead, let's rename the offending interface member variables to iface.
This is strictly an API break as the ShDevIntrTh is publicly available.
However, this data structure is only really used internally, so I think
this is reasonable.

[1]: https://stackoverflow.com/questions/25234203/what-is-the-interface-keyword-in-msvc
parent 2beb3091
Loading
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -32,11 +32,11 @@ namespace Tango::telemetry
void TelemetryAppender::init_logger_provider()
{
    // Don't engage with the telemetry system if not enabled
    if(!interface->cfg.enabled)
    if(!iface->cfg.enabled)
    {
        return;
    }
    if(!interface->cfg.logging_enabled)
    if(!iface->cfg.logging_enabled)
    {
        cleanup_logger_provider();
        return;
@@ -44,7 +44,7 @@ void TelemetryAppender::init_logger_provider()

    std::vector<std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor>> processorList;

    for(auto const &collector : interface->cfg.get_logging_collectors())
    for(auto const &collector : iface->cfg.get_logging_collectors())
    {
        std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> exporter;
        std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor> processor;
@@ -55,7 +55,7 @@ void TelemetryAppender::init_logger_provider()
#if defined(TANGO_TELEMETRY_USE_GRPC)
        {
            opentelemetry::exporter::otlp::OtlpGrpcLogRecordExporterOptions opts;
            opts.endpoint = interface->cfg.extract_grpc_host_port(collector.endpoint);
            opts.endpoint = iface->cfg.extract_grpc_host_port(collector.endpoint);
            opts.use_ssl_credentials = false;
            exporter = opentelemetry::exporter::otlp::OtlpGrpcLogRecordExporterFactory::Create(opts);
        }
@@ -96,9 +96,9 @@ void TelemetryAppender::init_logger_provider()
        case Configuration::Exporter::http:
        {
            opentelemetry::sdk::logs::BatchLogRecordProcessorOptions opts;
            opts.max_queue_size = interface->cfg.max_batch_queue_size;
            opts.max_export_batch_size = interface->cfg.logs_batch_size;
            opts.schedule_delay_millis = std::chrono::milliseconds(interface->cfg.batch_schedule_delay_in_milliseconds);
            opts.max_queue_size = iface->cfg.max_batch_queue_size;
            opts.max_export_batch_size = iface->cfg.logs_batch_size;
            opts.schedule_delay_millis = std::chrono::milliseconds(iface->cfg.batch_schedule_delay_in_milliseconds);
            processor = opentelemetry::sdk::logs::BatchLogRecordProcessorFactory::Create(std::move(exporter), opts);
        }
        break;
@@ -113,29 +113,29 @@ void TelemetryAppender::init_logger_provider()
        processorList.push_back(std::move(processor));
    }

    if(interface->cfg.is_a(Configuration::Kind::Server))
    if(iface->cfg.is_a(Configuration::Kind::Server))
    {
        const Configuration::Server &srv_info = std::get<0>(interface->cfg.details);
        const Configuration::Server &srv_info = std::get<0>(iface->cfg.details);
        logger_name = srv_info.device_name;
    }
    else
    {
        const Configuration::Client &clt_info = std::get<1>(interface->cfg.details);
        const Configuration::Client &clt_info = std::get<1>(iface->cfg.details);
        logger_name = clt_info.name;
    }

    auto resource = opentelemetry::sdk::resource::Resource::Create(interface->get_resource_attributes());
    auto resource = opentelemetry::sdk::resource::Resource::Create(iface->get_resource_attributes());

    /* The following code does not compile with gcc 10.2.1
    using LoggerProvider_SharedPtr = opentelemetry::nostd::shared_ptr<opentelemetry::sdk::logs::LoggerProvider>;
    interface->logger_provider = LoggerProvider_SharedPtr(
        opentelemetry::sdk::logs::LoggerProviderFactory::Create(std::move(processorList), resource));
    */
    interface->logger_provider = StdUniqueToNostdShared(
    iface->logger_provider = StdUniqueToNostdShared(
        opentelemetry::sdk::logs::LoggerProviderFactory::Create(std::move(processorList), resource));

    // set the global logger provider
    opentelemetry::logs::Provider::SetLoggerProvider(interface->logger_provider);
    opentelemetry::logs::Provider::SetLoggerProvider(iface->logger_provider);
}

//-------------------------------------------------------------------------------------
@@ -151,8 +151,8 @@ void TelemetryAppender::cleanup_logger_provider()
    }

    using LoggerProviderPtr = opentelemetry::nostd::shared_ptr<opentelemetry::logs::LoggerProvider>;
    interface->logger_provider = LoggerProviderPtr(new opentelemetry::logs::NoopLoggerProvider);
    opentelemetry::logs::Provider::SetLoggerProvider(interface->logger_provider);
    iface->logger_provider = LoggerProviderPtr(new opentelemetry::logs::NoopLoggerProvider);
    opentelemetry::logs::Provider::SetLoggerProvider(iface->logger_provider);
}

//-------------------------------------------------------------------------------------
@@ -160,7 +160,7 @@ void TelemetryAppender::cleanup_logger_provider()
//-------------------------------------------------------------------------------------
int TelemetryAppender::_append(const log4tango::LoggingEvent &event)
{
    if(!interface->cfg.enabled)
    if(!iface->cfg.enabled)
    {
        return 0;
    }
@@ -184,7 +184,7 @@ int TelemetryAppender::_append(const log4tango::LoggingEvent &event)
        }
    };

    auto ctx = interface->get_current_opentelemetry_span()->GetContext();
    auto ctx = iface->get_current_opentelemetry_span()->GetContext();
    auto provider = opentelemetry::logs::Provider::GetLoggerProvider();
    auto logger = provider->GetLogger(logger_name, "cppTango", git_revision());

+2 −6
Original line number Diff line number Diff line
@@ -16,10 +16,6 @@
  #include <tango/common/utils/assert.h>
  #include <tango/server/Logging.h>

  #ifdef interface
    #undef interface
  #endif

namespace Tango::telemetry
{
class InterfaceImplementation;
@@ -27,7 +23,7 @@ class InterfaceImplementation;
class TelemetryAppender : public log4tango::Appender
{
    // the interface config
    std::shared_ptr<InterfaceImplementation> interface;
    std::shared_ptr<InterfaceImplementation> iface;
    // the logger name
    std::string logger_name;

@@ -37,7 +33,7 @@ class TelemetryAppender : public log4tango::Appender
    //-------------------------------------------------------------------------------------
    TelemetryAppender(std::shared_ptr<InterfaceImplementation> owner) :
        log4tango::Appender(kTelemetryLogAppenderName),
        interface(owner)
        iface(owner)
    {
        init_logger_provider();
    }
+1 −6
Original line number Diff line number Diff line
@@ -32,12 +32,7 @@ struct _ShDevIntrTh
    bool cmd_pending;        // The new command flag
    DevIntrCmdCode cmd_code; // The command code
    bool th_running;         // Thread running flag
#if _MSC_VER >= 1900
  #ifdef interface
    #undef interface
  #endif
#endif
    Tango::DevIntr interface; // Device interface
    Tango::DevIntr iface;    // Device interface
};
typedef struct _ShDevIntrTh ShDevIntrTh;

+1 −1
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ void DevIntrThread::push_event()

    AutoTangoMonitor sync(dev, true);

    if(shared_data.interface.has_changed(dev))
    if(shared_data.iface.has_changed(dev))
    {
        TANGO_LOG_DEBUG << "Device interface has changed" << std::endl;

+4 −4
Original line number Diff line number Diff line
@@ -3391,7 +3391,7 @@ void DeviceImpl::add_attribute(Tango::Attr *new_attr)

            if(!th_running)
            {
                devintr_shared.interface.get_interface(this);
                devintr_shared.iface.get_interface(this);
            }
        }
    }
@@ -3546,7 +3546,7 @@ void DeviceImpl::remove_attribute(Tango::Attr *rem_attr, bool free_it, bool clea

            if(!th_running)
            {
                devintr_shared.interface.get_interface(this);
                devintr_shared.iface.get_interface(this);
            }
        }
    }
@@ -3831,7 +3831,7 @@ void DeviceImpl::add_command(Tango::Command *new_cmd, bool device_level)

            if(!th_running)
            {
                devintr_shared.interface.get_interface(this);
                devintr_shared.iface.get_interface(this);
            }
        }
    }
@@ -3931,7 +3931,7 @@ void DeviceImpl::remove_command(Tango::Command *rem_cmd, bool free_it, bool clea

            if(!th_running)
            {
                devintr_shared.interface.get_interface(this);
                devintr_shared.iface.get_interface(this);
            }
        }
    }