Files
doc-fr/reference/ev/evembed/construct.xml
2022-03-30 13:02:03 +01:00

165 lines
4.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 33e5f4ef7243bc1282acb1cba93e8f99c1debe68 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<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>Construit un objet EvEmbed</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<constructorsynopsis>
<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>
</constructorsynopsis>
<para>
Il s'agit d'un type de watcher avancé qui permet d'intégrer une boucle
d'événement dans une autre (actuellement, seuls les événements IO sont
supportés dans la boucle interne, les autres types de watcher ne doit
pas être utilisés).
</para>
<para>
Voir la
<link
xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_embed_code_when_one_backend_">
documentation libev</link> pour plus de détails.
</para>
<para>
Ce watcher est le plus utile sous les systèmes
<emphasis>BSD</emphasis><literal>kqueue</literal> n'est pas utilisé,
pour être capable de gérer un grand nombre de sockers. Voir l'exemple ci-dessous.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term>
<parameter>other</parameter>
</term>
<listitem>
<para>
Une instance de <classname>EvLoop</classname>. La boucle à intégrer ;
elle doit être encapsulable (voir la méthode
<methodname>Ev::embeddableBackends</methodname>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>callback</parameter>
</term>
<listitem>
<para>
Voir les
<link linkend="ev.watcher-callbacks">fonctions de rappel des Watcher</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>data</parameter>
</term>
<listitem>
<para>
Données personnalisées à associer avec le watcher.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>priority</parameter>
</term>
<listitem>
<para>
<link linkend="ev.constants.watcher-pri">Priorité du Watcher</link>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>
Encapsulage d'une boucle créée avec le gestionnaire kqueue dans la boucle par défaut</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Vérifie si kqueue est disponible et crée un gestionnaire kqueue
* pour l'utiliser avec les sockets (qui fonctionne habituellement avec n'importe quelle implémentation
* de kqueue. Stocke la boucle d'événement kqueue/socket seulement, dans loop_socket.
* (optionnellement, utilisation de EVFLAG_NOENV)
*
* Exemple issue de
* 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;
}
// Maintenant, on utilise $socket_loop pour tous les sockets, et $loop poour tout le reste
?>
]]>
</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
-->