6#include "AbstractCommunicationInterfaces.h"
8namespace knowDataTransfert::Test
10 class SendingCommunicationInterface;
11 class ReceivingCommunicationInterface;
28 m_receivers[_communicationNamespace].append(_receiver);
32 m_senders[_communicationNamespace] = _sender;
34 void add(
const Data& _data,
void* _sender,
const QString& _communicationNamespace)
36 QMutexLocker l(&m_mutex);
37 m_dmis.append({_communicationNamespace, _data, _sender});
40 void add(
const DataControl& _data,
void* _sender,
const QString& _communicationNamespace)
42 QMutexLocker l(&m_mutex);
43 m_dcmis.append({_communicationNamespace, _data, _sender});
50 template<
typename _MsgT_>
53 QString communicationNamespace;
58 using DataMessageInfo = MessageInfo<Data>;
59 using DataControlMessageInfo = MessageInfo<DataControl>;
61 int m_fault_generator = 0;
68 bool m_running =
true;
76 m_center->add(_communicationNamespace,
this);
78 void initialise()
override {}
79 void send(
const Data& _data)
override;
80 void send(
const DataControl& _dataControl)
override;
81 using AbstractSendingCommunicationInterface::handle;
83 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);
145 void SendingCommunicationInterface::send(
const Data& _data)
147 m_center->add(_data,
this, communicationNamespace());
150 void SendingCommunicationInterface::send(
const DataControl& _dataControl)
152 m_center->add(_dataControl,
this, communicationNamespace());
155 void ReceivingCommunicationInterface::send(
const DataControl& _dataControl)
157 m_center->add(_dataControl,
this, communicationNamespace());
Definition AbstractCommunicationInterfaces.h:47
Definition AbstractCommunicationInterfaces.h:35
Definition AbstractCommunicationInterfaces.h:27