<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
<MAN>
  <LANGUAGE>eng</LANGUAGE>
  <TITLE>pvm_probe</TITLE>
  <TYPE>Scilab function</TYPE>
  <DATE>May 1998</DATE>
  <SHORT_DESCRIPTION name="pvm_probe"> Check if message has arrived.  </SHORT_DESCRIPTION>
  <CALLING_SEQUENCE>
    <CALLING_SEQUENCE_ITEM>[buffid] = pvm_probe(tid, msgtag)  </CALLING_SEQUENCE_ITEM>
  </CALLING_SEQUENCE>
  <PARAM>
    <PARAM_INDENT>
      <PARAM_ITEM>
        <PARAM_NAME>tid</PARAM_NAME>
        <PARAM_DESCRIPTION>
          <SP>: integer, task identifier of sending process supplied by the user.</SP>
        </PARAM_DESCRIPTION>
      </PARAM_ITEM>
      <PARAM_ITEM>
        <PARAM_NAME>msgtag : integer, message tag supplied by the user.  msgtag should be</PARAM_NAME>
        <PARAM_DESCRIPTION>
          <SP>&gt;= 0.</SP>
        </PARAM_DESCRIPTION>
      </PARAM_ITEM>
      <PARAM_ITEM>
        <PARAM_NAME>buffid</PARAM_NAME>
        <PARAM_DESCRIPTION>
          <SP>: integer, returning  the  value  of  the  new  active              receive  buffer  identifier.   Values less than zero              indicate an error.</SP>
        </PARAM_DESCRIPTION>
      </PARAM_ITEM>
    </PARAM_INDENT>
  </PARAM>
  <DESCRIPTION>
    <P><VERB>pvm_probe</VERB> 
    checks to see if a message with  label
         <VERB>msgtag</VERB>   has  arrived  from <VERB>tid</VERB>.
         If  a matching message has
         arrived <VERB>pvm_probe</VERB> returns a buffer identifier in 
         <VERB>bufid</VERB>. This
         bufid  can be used in a pvm_bufinfo call to determine infor-
         mation about the message such as its source and length.</P>
    <P>
         If the requested message has  not  arrived,  then  pvm_probe
         returns  with  a 0 in bufid. If some error occurs bufid will
         be &lt; 0.</P>
    <P>
         A -1 in msgtag or tid matches  anything.   This  allows  the
         user  the  following  options.   If  tid  = -1 and msgtag is
         defined by the user, then pvm_probe will  accept  a  message
         from  any  process which has a matching msgtag.  If msgtag =
         -1 and tid is defined  by  the  user,  then  pvm_probe  will
         accept  any message that is sent from process tid.  If tid =
         -1 and msgtag = -1, then pvm_probe will accept  any  message
         from any process.</P>
    <P>
         pvm_probe can be called multiple times to check if  a  given
         message  has  arrived  yet.  After  the message has arrived,
         pvm_recv must be called before the message can  be  unpacked
         into the user's memory using the unpack routines.</P>
    <P>
    For example</P>
    <VERBATIM>
<![CDATA[
arrived = pvm_probe( tid, msgtag );
if (arrived >= 0) then [bytes, msgtag, tid, info] = pvm_info(arrived); end
   ]]>
    </VERBATIM>
  </DESCRIPTION>
  <SEE_ALSO>
    <SEE_ALSO_ITEM>
      <LINK>pvm_recv</LINK>
    </SEE_ALSO_ITEM>
  </SEE_ALSO>
</MAN>
