<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <refentry xml:id="evembed.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>EvEmbed::__construct</refname> <refpurpose>Constructs the EvEmbed object</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <modifier>public</modifier> <methodname>EvEmbed::__construct</methodname> <methodparam> <type>object</type> <parameter>other</parameter> </methodparam> <methodparam choice="opt"> <type>callable</type> <parameter>callback</parameter> </methodparam> <methodparam choice="opt"> <type>mixed</type> <parameter>data</parameter> </methodparam> <methodparam choice="opt"> <type>int</type> <parameter>priority</parameter> </methodparam> </methodsynopsis> <para> This is a rather advanced watcher type that lets to embed one event loop into another(currently only IO events are supported in the embedded loop, other types of watchers might be handled in a delayed or incorrect fashion and must not be used). </para> <para> See <link xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_embed_code_when_one_backend_">the libev documentation</link> for details. </para> <para> This watcher is most useful on <emphasis>BSD</emphasis> systems without working <literal>kqueue</literal> to still be able to handle a large number of sockets. See example below. </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <variablelist> <varlistentry> <term> <parameter>other</parameter> </term> <listitem> <para> Instance of <classname>EvLoop</classname> . The loop to embed, this loop must be embeddable(see <methodname>Ev::embeddableBackends</methodname> ). </para> </listitem> </varlistentry> <varlistentry> <term> <parameter>callback</parameter> </term> <listitem> <para> See <link linkend="ev.watcher-callbacks">Watcher callbacks</link> . </para> </listitem> </varlistentry> <varlistentry> <term> <parameter>data</parameter> </term> <listitem> <para> Custom data associated with the watcher. </para> </listitem> </varlistentry> <varlistentry> <term> <parameter>priority</parameter> </term> <listitem> <para> <link linkend="ev.constants.watcher-pri">Watcher priority</link> </para> </listitem> </varlistentry> </variablelist> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> Returns EvEmbed object on success. </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <example> <title>Embedding loop created with kqueue backend into the default loop</title> <programlisting role="php"> <![CDATA[ <?php /* * Check if kqueue is available but not recommended and create a kqueue backend * for use with sockets (which usually work with any kqueue implementation). * Store the kqueue/socket-only event loop in loop_socket. (One might optionally * use EVFLAG_NOENV, too) * * Example borrowed from * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9 */ $loop = EvLoop::defaultLoop(); $socket_loop = NULL; $embed = NULL; if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) { if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) { $embed = new EvEmbed($loop); } } if (!$socket_loop) { $socket_loop = $loop; } // Now use $socket_loop for all sockets, and $loop for anything else ?> ]]> </programlisting> </example> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <simplelist> <member> <methodname>Ev::embeddableBackends</methodname> </member> </simplelist> </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 -->