sender ......<br><br>main = do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fd &lt;- mqOpen &quot;/myipc&quot; ReadWrite (Just nullFileMode) (Just (MQAttributes 0 128 128 0))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mqSend fd &quot;Hello world&quot; 11 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MQAttributes flags maxMsgNum maxMsgSize curNumMsgs) &lt;- mqGetAttributes fd<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putStrLn (&quot;attrs flags-&gt;&quot; ++ (show flags) ++ &quot;&nbsp; maxMsgNum -&gt; &quot; ++ (show maxMsgNum) ++ &quot; maxMsgSize -&gt; &quot; ++ (show maxMsgSize) ++ &quot;&nbsp; curNumMsgs -&gt; &quot; ++ (show curNumMsgs))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mqClose fd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fd<br>~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>-----------------------------------------<br><br>receiver<br><br><br>main = do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fd &lt;- mqOpen &quot;/myipc&quot; ReadWrite (Just nullFileMode)&nbsp; (Just (MQAttributes&nbsp; 0 128 128 0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MQAttributes flags maxMsgNum maxMsgSize curNumMsgs) &lt;- mqGetAttributes fd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putStrLn (&quot;attrs flags-&gt;&quot; ++ (show flags) ++ &quot;&nbsp; maxMsgNum -&gt; &quot; ++ (show maxMsgNum) ++ &quot; maxMsgSize -&gt; &quot; ++ (show maxMsgSize) ++ &quot;&nbsp; curNumMsgs -&gt; &quot; ++ (show curNumMsgs))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MQAttributes flags maxMsgNum maxMsgSize curNumMsgs) &lt;- mqSetAttributes fd (MQAttributes{flags=0, maxMsgNum=127, maxMsgSize=127, curNumMsgs=7})<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putStrLn (&quot;attrs flags-&gt;&quot; ++ (show flags) ++ &quot;&nbsp; maxMsgNum -&gt; &quot; ++ (show maxMsgNum) ++ &quot; maxMsgSize -&gt; &quot; ++ (show maxMsgSize) ++ &quot;&nbsp; curNumMsgs -&gt; &quot; ++ (show curNumMsgs))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (s, n) &lt;- mqReceive fd 60 Nothing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putStrLn (&quot;dump &quot; ++ s)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (s, n) &lt;- mqReceive fd 11 (Just 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putStrLn s<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mqClose fd<br>--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mqUnlink &quot;/myipc&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fd<br>~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>---------------------------------------------------------------------------------------------------------------------------------------------<br><br>Thanks, Vasili<br><br><br><br><div class="gmail_quote">
On Sat, May 10, 2008 at 4:09 PM, Brandon S. Allbery KF8NH &lt;<a href="mailto:allbery@ece.cmu.edu">allbery@ece.cmu.edu</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style=""><div class="Ih2E3d"><br><div><div>On 2008 May 10, at 16:47, Galchin, Vasili wrote:</div><br><blockquote type="cite">&nbsp;&nbsp; &nbsp; Last night I sent out an announcement about some POSIX work that I have been doing. In any case, one of the FFI wrappers is driving me crazy, i.e. the one for mq_receive:<a href="http://opengroup.org/onlinepubs/007908799/xsh/mq_receive.html" target="_blank">http://opengroup.org/onlinepubs/007908799/xsh/mq_receive.html</a>&nbsp; . When I call this function (mqReceive), I get &quot;message too long&quot;. In my test cases I am sending and receiving messages that are only 11 bytes! The wrapper seems really straightforward. Perhaps&nbsp; I am looking right at the problem and don&#39;t see. I need other eyes on the wrapper to help me ;^). Please see below.<br>
</blockquote></div><div><br></div></div><div>What&#39;s the other end sending?</div><div><br></div><div>I suspect most implementations of mq_receive() layer it on top of msgrcv(), which can return E2BIG (== EMSGSIZE) if the message to be received is larger than the receiving buffer --- a condition which I note mq_receive() does not document (unless mq_msgsize means a given queue only supports fixed size messages, which seems odd).</div>
<br><div> <span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div style="">
<span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div>
<font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">--&nbsp;</span></span></font></div><div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">brandon s. allbery [solaris,freebsd,perl,pugs,haskell] <a href="mailto:allbery@kf8nh.com" target="_blank">allbery@kf8nh.com</a></span></span></font></div>
<div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">system administrator [openafs,heimdal,too many hats] <a href="mailto:allbery@ece.cmu.edu" target="_blank">allbery@ece.cmu.edu</a></span></span></font></div>
<div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">electrical and computer engineering, carnegie mellon university &nbsp; &nbsp;KF8NH</span></span></font></div><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><br>
</span></span></span></div></span> </div><br></div></blockquote></div><br>