[IPCPipe] Example using boost message queues
This commit is contained in:
parent
454e358882
commit
d05cdcb9ea
@ -7,6 +7,7 @@ namespace boost
|
|||||||
|
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
#pragma warning(disable: 4091)
|
#pragma warning(disable: 4091)
|
||||||
|
#pragma warning(disable: 4996)
|
||||||
|
|
||||||
#undef sleep
|
#undef sleep
|
||||||
//#define BOOST_DISABLE_WIN32
|
//#define BOOST_DISABLE_WIN32
|
||||||
@ -222,6 +223,38 @@ namespace Components
|
|||||||
|
|
||||||
IPCPipe::IPCPipe()
|
IPCPipe::IPCPipe()
|
||||||
{
|
{
|
||||||
|
Command::Add("mq1", [](Command::Params*)
|
||||||
|
{
|
||||||
|
boost::interprocess::message_queue::remove("message_queue");
|
||||||
|
|
||||||
|
//Create a message_queue.
|
||||||
|
boost::interprocess::message_queue mq(boost::interprocess::create_only, "message_queue", 100, sizeof(int));
|
||||||
|
|
||||||
|
int i = 1;
|
||||||
|
mq.send(&i, sizeof(i), 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
Command::Add("mq2", [](Command::Params*)
|
||||||
|
{
|
||||||
|
boost::interprocess::message_queue mq(boost::interprocess::open_only, "message_queue");
|
||||||
|
|
||||||
|
unsigned int priority;
|
||||||
|
boost::interprocess::message_queue::size_type recvd_size;
|
||||||
|
|
||||||
|
//Receive 100 numbers
|
||||||
|
for (int i = 0; i < 3; ++i) {
|
||||||
|
int number;
|
||||||
|
if (!mq.try_receive(&number, sizeof(number), recvd_size, priority) || recvd_size != sizeof(number))
|
||||||
|
{
|
||||||
|
Logger::Print("Nothing received\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger::Print("Rec: %d\n", number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (Dedicated::IsEnabled()) return;
|
if (Dedicated::IsEnabled()) return;
|
||||||
|
|
||||||
// Server pipe
|
// Server pipe
|
||||||
@ -258,17 +291,4 @@ namespace Components
|
|||||||
IPCPipe::ServerPipe.destroy();
|
IPCPipe::ServerPipe.destroy();
|
||||||
IPCPipe::ClientPipe.destroy();
|
IPCPipe::ClientPipe.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void test()
|
|
||||||
{
|
|
||||||
boost::interprocess::message_queue::remove("message_queue");
|
|
||||||
|
|
||||||
//Create a message_queue.
|
|
||||||
boost::interprocess::message_queue mq
|
|
||||||
(boost::interprocess::create_only //only create
|
|
||||||
, "message_queue" //name
|
|
||||||
, 100 //max message number
|
|
||||||
, sizeof(int) //max message size
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user