Commit 6a126222 authored by Thomas Braun's avatar Thomas Braun
Browse files

Merge branch 'split-code-sig-meeting-6-of-x' into 'main'

LTS SIG meeting: code split 6 of X

Close #1561

See merge request !1543
parents 8afeb918 15f9d779
Loading
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -7,9 +7,11 @@
#include <tango/client/Database.h>
#include <tango/client/DeviceAttribute.h>
#include <tango/client/DummyDeviceProxy.h>
#include <tango/client/eventconsumer.h>
#include <tango/client/NotifdEventConsumer.h>
#include <tango/client/ZmqEventConsumer.h>
#include <tango/server/ReaderLock.h>
#include <tango/server/tango_config.h>
#include <tango/server/Util.h>
#include <tango/server/WriterLock.h>

#include <iomanip>
+3 −1
Original line number Diff line number Diff line
@@ -4,7 +4,9 @@
 * SPDX-License-Identifier: LGPL-3.0-or-later
 */

#include <tango/client/devasyn.h>
#include <tango/client/AsynReq.h>

#include <tango/client/ApiExcept.h>

#include <algorithm>

+130 −0
Original line number Diff line number Diff line
/*
 * SPDX-FileCopyrightText: 2025 Copyright contributors to the cppTango project
 *
 * SPDX-License-Identifier: LGPL-3.0-or-later
 */
#include <tango/client/AttrConfEventData.h>

#include <tango/internal/client/event_helpers.h>

#include <tango/server/tango_clock.h>

#include <chrono>

namespace Tango
{

//+----------------------------------------------------------------------
//
//  AttrConfEventData constructor
//
//-----------------------------------------------------------------------

AttrConfEventData::AttrConfEventData(DeviceProxy *dev,
                                     const std::string &nam,
                                     const std::string &evt,
                                     Tango::AttributeInfoEx *attr_conf_in,
                                     Tango::EventReason event_reason_in,
                                     const DevErrorList &errors_in) :
    device(dev),
    attr_name(nam),
    event(evt),
    attr_conf(attr_conf_in),
    event_reason(event_reason_in),
    errors(errors_in)
{
    TANGO_ASSERT(ensure_failure_reason_with_errors(event_reason, errors));

    err = errors.length() != 0;

    set_time();
}

//+----------------------------------------------------------------------
//
//  AttrConfEventData copy constructor
//
//-----------------------------------------------------------------------

AttrConfEventData::AttrConfEventData(const AttrConfEventData &sou)
{
    device = sou.device;
    attr_name = sou.attr_name;
    event = sou.event;
    if(sou.attr_conf != nullptr)
    {
        delete attr_conf;
        attr_conf = new(AttributeInfoEx);
        *attr_conf = *(sou.attr_conf);
    }
    else
    {
        delete attr_conf;
        attr_conf = nullptr;
    }
    err = sou.err;
    errors = sou.errors;
    event_reason = sou.event_reason;
    reception_date = sou.reception_date;
}

//+----------------------------------------------------------------------
//
//     AttrConfEventData assignement operator
//
//-----------------------------------------------------------------------

AttrConfEventData &AttrConfEventData::operator=(const AttrConfEventData &ri)
{
    if(&ri == this)
    {
        return *this;
    }

    device = ri.device;
    attr_name = ri.attr_name;
    event = ri.event;
    if(ri.attr_conf != nullptr)
    {
        delete attr_conf;
        attr_conf = new(AttributeInfoEx);
        *attr_conf = *(ri.attr_conf);
    }
    else
    {
        delete attr_conf;
        attr_conf = nullptr;
    }
    err = ri.err;
    errors = ri.errors;
    event_reason = ri.event_reason;
    reception_date = ri.reception_date;

    return *this;
}

//+----------------------------------------------------------------------
//
//     AttrConfEventData destructor
//
//-----------------------------------------------------------------------

AttrConfEventData::~AttrConfEventData()
{
    delete attr_conf;
}

//+-------------------------------------------------------------------------
//
// method :         AttrConfEventData::set_time
//
// description :     Set the event reception data
//
//--------------------------------------------------------------------------

void AttrConfEventData::set_time()
{
    reception_date = make_TimeVal(std::chrono::system_clock::now());
}

} // namespace Tango
+2 −1
Original line number Diff line number Diff line
@@ -9,8 +9,9 @@
#include <tango/internal/utils.h>

#include <tango/client/DbAttribute.h>
#include <tango/client/eventconsumer.h>
#include <tango/client/EventConsumer.h>
#include <tango/common/PointerWithLock.h>
#include <tango/server/Util.h>

#include <algorithm>
#include <csignal>
Loading