-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathCommunication.cpp
More file actions
48 lines (39 loc) · 963 Bytes
/
Communication.cpp
File metadata and controls
48 lines (39 loc) · 963 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "Communication.h"
#define BOOST_DATE_TIME_NO_LIB
#include <boost/interprocess/ipc/message_queue.hpp>
using namespace boost::interprocess;
Communication::Communication() : queueName("virtual")
{
// Clear the queue:
}
Communication::~Communication()
{
}
void Communication::Clear()
{
message_queue::remove(queueName.c_str());
}
Communication::Message Communication::GetQueuedMessage()
{
try
{
Communication::Message message;
unsigned int priority;
message_queue::size_type recvd_size;
message_queue mq(open_only, queueName.c_str());
mq.receive(&message, sizeof(message), recvd_size, priority);
if(recvd_size == sizeof(message))
{
return message;
}
}
catch(interprocess_exception &ex)
{
return Communication::None;
}
}
void Communication::SendQueuedMessage(Communication::Message message)
{
message_queue mq(create_only, queueName.c_str(), 1, sizeof(Communication::Message));
mq.send(&message, sizeof(message), 0);
}