<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.com-message-pump" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>com_message_pump</refname>
  <refpurpose>Process COM messages, sleeping for up to timeoutms milliseconds</refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>bool</type><methodname>com_message_pump</methodname>
   <methodparam choice="opt"><type>int</type><parameter>timeout_milliseconds</parameter><initializer>0</initializer></methodparam>
  </methodsynopsis>
  <para>
   This function will sleep for up to <parameter>timeout_milliseconds</parameter>
   milliseconds, or until a message arrives in the queue.
  </para>
  <para>
   The purpose of this function is to route COM calls between apartments and
   handle various synchronization issues.  This allows your script to wait
   efficiently for events to be triggered, while still handling other events
   or running other code in the background.  You should use it in a loop, as
   demonstrated by the example in the <function>com_event_sink</function>
   function, until you are finished using event bound COM objects.
  </para>
 </refsect1>
 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>timeout_milliseconds</parameter></term>
     <listitem>
      <para>
       The timeout, in milliseconds.
      </para>
      <para>
       If you do not specify a value for <parameter>timeout_milliseconds</parameter>,
       then 0 will be assumed.  A 0 value means that no waiting will be
       performed; if there are messages pending they will be dispatched as
       before; if there are no messages pending, the function will return
       &false; immediately without sleeping.
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>
 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   If a message or messages arrives before the timeout, they will be
   dispatched, and the function will return &true;. If the timeout occurs and
   no messages were processed, the return value will be &false;.
  </para>
 </refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
