5#include "AbstractCommunicationInterfaces.h"
8namespace knowDataTransfert::Test
10 class SendingCommunicationInterface;
11 class ReceivingCommunicationInterface;
25 m_receivers[_communicationNamespace].append(_receiver);
29 m_senders[_communicationNamespace] = _sender;
31 void add(
const Data& _data,
void* _sender,
const QString& _communicationNamespace)
33 QMutexLocker l(&m_mutex);
34 m_dmis.append({_communicationNamespace, _data, _sender});
37 void add(
const DataControl& _data,
void* _sender,
const QString& _communicationNamespace)
39 QMutexLocker l(&m_mutex);
40 m_dcmis.append({_communicationNamespace, _data, _sender});
46 template<
typename _MsgT_>
49 QString communicationNamespace;
54 using DataMessageInfo = MessageInfo<Data>;
55 using DataControlMessageInfo = MessageInfo<DataControl>;
57 int m_fault_generator = 0;
64 bool m_running =
true;
74 m_center->add(_communicationNamespace,
this);
76 void initialise()
override {}
77 void send(
const Data& _data)
override;
78 void send(
const DataControl& _dataControl)
override;
79 using AbstractSendingCommunicationInterface::handle;
81 int m_fault_generator = 1;
92 m_center->add(_communicationNamespace,
this);
94 void initialise()
override {}
95 void send(
const DataControl& _dataControl)
override;
96 using AbstractReceivingCommunicationInterface::handle;
101 void CommunicationCenter::run()
108 QMutexLocker l(&m_mutex);
109 std::swap(dmis, m_dmis);
110 std::swap(dcmis, m_dcmis);
112 for(
const DataMessageInfo& dmi : dmis)
114 for(ReceivingCommunicationInterface* i : m_receivers[dmi.communicationNamespace])
116 if(m_fault_generator % 3 != 0)
124 for(
const DataControlMessageInfo& dcmi : dcmis)
126 for(ReceivingCommunicationInterface* i : m_receivers[dcmi.communicationNamespace])
133 if(m_senders[dcmi.communicationNamespace] != dcmi.sender)
135 m_senders[dcmi.communicationNamespace]->handle(dcmi.msg);
139 QMutexLocker l(&m_mutex);
144 void SendingCommunicationInterface::send(
const Data& _data)
146 m_center->add(_data,
this, communicationNamespace());
149 void SendingCommunicationInterface::send(
const DataControl& _dataControl)
151 m_center->add(_dataControl,
this, communicationNamespace());
154 void ReceivingCommunicationInterface::send(
const DataControl& _dataControl)
156 m_center->add(_dataControl,
this, communicationNamespace());
164 createSendingInterface(
const QString& _communicationNamespace)
override
169 createReceivingInterface(
const QString& _communicationNamespace)
override
Definition AbstractCommunicationInterfaces.h:47
Definition AbstractCommunicationInterfaces.h:35
Definition AbstractCommunicationInterfaces.h:27