send/receiveをエミュレートできているから完璧だと思いきやpeekを利用した、receiveがうまくエミュレートできない。
int Message::receive(MessageInfo* dst, MessageInfo* src, bool(*equals)(MessageInfo* msg1, MessageInfo* msg2))
↑こんなやつ。
Linuxで使用可能な、受信msgrcvはメッセージタイプを指定しないと受信できない気がする。
ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg);
つまり、peekには向いているんだけど、キューに入っているメッセージをタイプを指定せず取り出すのができなさそう。
こまったなぁ。。。
とおもったらメッセージタイプに0を渡すとすべてのタイプにマッチする?との噂が。
試してみよう。