ProtocolParser/app_source/source/eventsbus.cpp

45 lines
909 B
C++

#include "eventsbus.h"
#include <QMutex>
EventsBus::EventsBus(QObject *parent)
: QObject{parent}
{
}
EventsBus* EventsBus::instance()
{
static QMutex mutex;
QMutexLocker locker(&mutex);
static EventsBus *singleton = nullptr;
if (!singleton) {
singleton = new EventsBus();
}
return singleton;
}
void EventsBus::reg_event(Event* event)
{
_events.append(event);
}
void EventsBus::unreg_event(Event* event)
{
_events.removeOne(event);
}
void EventsBus::push_data(QString type, QJsonObject data)
{
if (_event_history.count() >= 100)
_event_history.pop_front();
if (data["time"].toString()=="")
data.insert("time",QJsonValue(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")));
_event_history.append(data);
for (auto event : _events) {
if (event->type() == type)
emit event->triggered(data);
}
}