diff --git a/reference/yar/book.xml b/reference/yar/book.xml index 8136bba09e..7a532f8274 100644 --- a/reference/yar/book.xml +++ b/reference/yar/book.xml @@ -1,7 +1,5 @@ - - - + @@ -10,11 +8,25 @@ &reftitle.intro; - - Yar es un «framework» de RPC que pretende simplificar y facilitar la manera - en que se comunican las aplicaciones de PHP entre ellas. - Tiene la capacidad de llamar concurrentemente a varios servicios remotos. - + + Yar (Yet another RPC framework) es un framework RPC ligero y concurrente + cuyo objetivo es proporcionar una manera simple y sencilla de establecer + la comunicación entre aplicaciones PHP. También puede emitir varias + llamadas a servicios remotos de forma concurrente. + + + Yar es una extensión nativa de PHP, no una biblioteca de espacio de + usuario. Utiliza un protocolo binario compacto sobre HTTP, HTTPS o TCP y + se distribuye con tres empaquetadores integrados (php, + json y, cuando se compila con + , + msgpack), por lo que no se requiere ningún paquete + adicional ni proceso proxy. + + + El protocolo es independiente del lenguaje: existen implementaciones + compatibles para C, Java y Lua. + &reference.yar.setup; diff --git a/reference/yar/configure.xml b/reference/yar/configure.xml index 316ab7c1db..35087c3cfa 100644 --- a/reference/yar/configure.xml +++ b/reference/yar/configure.xml @@ -1,15 +1,13 @@ - - - +
&reftitle.install; - + &pecl.info; &url.pecl.package;yar - +
diff --git a/reference/yar/constants.xml b/reference/yar/constants.xml index c7c4102973..a4c2302c80 100644 --- a/reference/yar/constants.xml +++ b/reference/yar/constants.xml @@ -1,166 +1,318 @@ - - - + &reftitle.constants; &extension.constants; - - - - - YAR_VERSION - (string) - - - - - - - - - YAR_CLIENT_PROTOCOL_HTTP - (int) - - - - - - - - - YAR_OPT_PACKAGER - (int) - - - - - - - - - YAR_OPT_TIMEOUT - (int) - - - - - - - - - YAR_OPT_CONNECT_TIMEOUT - (int) - - - - - - - - - YAR_OPT_HEADER - (array) - - - - Desde 2.0.4 - - - - - - YAR_PACKAGER_PHP - (string) - - - - - - - - - YAR_PACKAGER_JSON - (string) - - - - - - - - - YAR_ERR_OKEY - (int) - - - - - - - - - YAR_ERR_OUTPUT - (int) - - - - - - - - - YAR_ERR_TRANSPORT - (int) - - - - - - - - - YAR_ERR_REQUEST - (int) - - - - - - - - - YAR_ERR_PROTOCOL - (int) - - - - - - - - - YAR_ERR_PACKAGER - (int) - - - - - - - - - YAR_ERR_EXCEPTION - (int) - - - - - - - - + + + + YAR_VERSION + (string) + + + + La versión de la extensión Yar, por ejemplo + "2.4.0". + + + + + + YAR_HAS_MSGPACK + (int) + + + + 1 cuando Yar se compiló con + , en caso contrario + 0. + + + + + + YAR_CLIENT_PROTOCOL_HTTP + (int) + + + + Identifica el protocolo HTTP, expuesto a través de la propiedad de solo + lectura _protocol de + Yar_Client. + + + + + + YAR_CLIENT_PROTOCOL_TCP + (int) + + + + Identifica el protocolo TCP, expuesto a través de la propiedad de solo + lectura _protocol de + Yar_Client. + + + + + + YAR_CLIENT_PROTOCOL_UNIX + (int) + + + + Identifica el protocolo de sockets Unix, expuesto a través de la propiedad + de solo lectura _protocol de + Yar_Client. + + + + + + YAR_OPT_PACKAGER + (int) + + + + Opción del cliente que reemplaza la directiva + yar.packager + para un único cliente. El valor debe ser uno de + php, json o + msgpack. + + + + + + YAR_OPT_PERSISTENT + (int) + + + + Opción del cliente que activa las conexiones persistentes. Cuando se + establece a un valor verdadero, se utiliza el keep-alive de HTTP, de modo + que las llamadas repetidas al mismo servidor reutilizan la conexión + durante el resto del ciclo de vida de la petición PHP. + + + + + + YAR_OPT_TIMEOUT + (int) + + + + Opción del cliente que reemplaza la directiva + yar.timeout, en + milisegundos. + + + + + + YAR_OPT_CONNECT_TIMEOUT + (int) + + + + Opción del cliente que reemplaza la directiva + yar.connect_timeout, + en milisegundos. + + + + + + YAR_OPT_HEADER + (int) + + + + Opción del cliente para añadir cabeceras HTTP personalizadas. El valor + debe ser un array de cadenas como + "X-Custom: valor". Solo es efectiva con los + protocolos HTTP y HTTPS. Disponible a partir de Yar 2.0.4. + + + + + + YAR_OPT_RESOLVE + (int) + + + + Opción del cliente que reemplaza la resolución de nombres de host para las + llamadas HTTP. El valor debe ser un array de cadenas con el formato + HOST:PORT:ADDRESS, siguiendo la sintaxis de + CURLOPT_RESOLVE de curl. Requiere libcurl + >= 7.21.3. Disponible a partir de Yar 2.1.0. + + + + + + YAR_OPT_PROXY + (int) + + + + Opción del cliente para encaminar las llamadas HTTP a través de un proxy + HTTP. El valor debe ser una cadena como 127.0.0.1:8888. + Disponible a partir de Yar 2.2.0. + + + + + + YAR_OPT_PROVIDER + (int) + + + + Opción del cliente que transporta la identidad del proveedor enviada con + cada petición. El valor debe ser una cadena de 32 bytes como máximo, que + se pasa al método mágico __auth del lado del servidor. + Disponible a partir de Yar 2.3.0. + + + + + + YAR_OPT_TOKEN + (int) + + + + Opción del cliente que transporta el token de autenticación enviado con + cada petición. El valor debe ser una cadena de 32 bytes como máximo, que + se pasa al método mágico __auth del lado del servidor. + Disponible a partir de Yar 2.3.0. + + + + + + YAR_PACKAGER_PHP + (string) + + + + El identificador del empaquetador php, + "PHP". + + + + + + YAR_PACKAGER_JSON + (string) + + + + El identificador del empaquetador json, + "JSON". + + + + + + YAR_PACKAGER_MSGPACK + (string) + + + + El identificador del empaquetador msgpack, + "MSGPACK". + + + + + + YAR_ERR_OKEY + (int) + + + + Ningún error; la petición se procesó correctamente. + + + + + + YAR_ERR_PACKAGER + (int) + + + + Un error del empaquetador, por ejemplo un cuerpo que no se ha podido + desempaquetar. + + + + + + YAR_ERR_PROTOCOL + (int) + + + + Un error de protocolo, por ejemplo una cabecera Yar mal formada. + + + + + + YAR_ERR_REQUEST + (int) + + + + Un error de petición, por ejemplo una llamada a un método no definido o no + público. + + + + + + YAR_ERR_OUTPUT + (int) + + + + Un error de salida, por ejemplo el servidor no ha podido iniciar su búfer + de salida. + + + + + + YAR_ERR_TRANSPORT + (int) + + + + Un error de transporte, por ejemplo un fallo de conexión o un tiempo de + espera agotado. + + + + + + YAR_ERR_EXCEPTION + (int) + + + + El servicio remoto lanzó una excepción durante el procesamiento de la + petición. + + + + - - + &reftitle.examples; - Ejemplo de servidor de Yar + Ejemplo de servidor Yar handle(); +$server = new Yar_Server(new Operator()); +$server->handle(); ?> ]]> - Acceder al servidor desde el navegador (petición GET) + Acceso al servidor desde el navegador (petición GET) + + Cuando se emite una petición GET al URI del servicio, Yar muestra una + página de información que lista todos los métodos públicos del objeto + ejecutor junto con su comentario de documentación. Esto se controla con + la directiva + yar.expose_info. + &example.outputs.similar; - Información del servidor de Yar + Yar Server Info @@ -67,21 +72,20 @@ $servidor->handle(); - Ejemplo de cliente de Yar + Ejemplo de cliente Yar add(1, 2)); +/* llamada directa */ +var_dump($client->add(1, 2)); -/* llamar mediante el método 'call' */ -var_dump($cliente->call("add", array(3, 2))); +/* llamada mediante call() */ +var_dump($client->call("add", array(3, 2))); - -/* _add no puede ser llamado */ -var_dump($cliente->_add(1, 2)); +/* _add no se puede llamar: no es público */ +var_dump($client->_add(1, 2)); ?> ]]> @@ -90,40 +94,63 @@ var_dump($cliente->_add(1, 2)); - Ejemplo de cliente concurrente de Yar + Ejemplo de cliente concurrente Yar ]]> &example.outputs.similar; + + Ejemplo de cliente TCP Yar + + Además de HTTP, Yar_Client puede comunicarse con + servidores compatibles con Yar a través de TCP o de sockets Unix, por + ejemplo con un servicio implementado con el framework Yar en C. El + servidor remoto debe implementar el mismo protocolo binario de Yar. + + +add(1, 2)); +?> +]]> + + + - +
&reftitle.runtime; @@ -19,9 +18,15 @@ - yar.packager - php - INI_SYSTEM + yar.connect_timeout + 1000 + INI_ALL + + + + yar.content_type + application/octet-stream + INI_ALL @@ -31,21 +36,27 @@ - yar.connect_timeout - 1000 - INI_ALL + yar.expose_info + On + INI_PERDIR - yar.timeout - 5000 + yar.packager + php + INI_PERDIR + + + + yar.ssl_verify + Off INI_ALL - yar.expose_info - On - INI_SYSTEM + yar.timeout + 5000 + INI_ALL @@ -57,61 +68,124 @@ - - - yar.packager - string - - - - Podría ser php, json, y msgpack (requiere construcción con soporte para msgpack) - - - - - - yar.debug - string - - - - - - - - - yar.connect_timeout - int - - - - Tiempo de espera en ms - - - - - - yar.timeout - int - - - - Tiempo de espera en ms - - - - - - yar.expose_info - bool - - - - Si exponer la información del servicio (al acceder al servidor mediante GET) - - - + + yar.connect_timeout + int + + + + Tiempo de espera de conexión, en milisegundos, para las llamadas HTTP + emitidas por Yar_Client y + Yar_Concurrent_Client. + + + + Este valor se interpreta en milisegundos. Antes de Yar 1.2.1 se medía + en segundos (el valor predeterminado era + 1). + + + + + + + yar.content_type + string + + + + El valor de la cabecera de respuesta Content-Type + enviada por Yar_Server. Yar utiliza un protocolo + binario, por lo que el valor predeterminado es + application/octet-stream. + + + + + + yar.debug + bool + + + + Activa el modo de depuración. Cuando está activo, Yar emite mensajes + E_WARNING con detalles a nivel de protocolo para + cada petición y cada respuesta, precedidos de + [Debug Yar_Server] o + [Debug Yar_Client] y de una marca de tiempo. + + + + + + yar.expose_info + bool + + + + Indica si Yar_Server::handle muestra la página + de información del servicio para las peticiones que no son POST + (habitualmente GET). Cuando esta directiva está desactivada, dichas + peticiones lanzan en su lugar una + Yar_Server_Exception. + + + + + + yar.packager + string + + + + El empaquetador predeterminado utilizado para serializar los cuerpos de + las peticiones y de las respuestas. Los valores válidos son + php (serialización de PHP), + json y + msgpack (únicamente cuando Yar se ha compilado con + ). + + + Cuando Yar se compila con soporte de msgpack, el valor predeterminado + pasa a ser msgpack. + + + Este valor puede reemplazarse en cada cliente mediante la opción + YAR_OPT_PACKAGER. + + + + + + yar.ssl_verify + bool + + + + Indica si se verifica el certificado TLS de los servidores HTTPS. Cuando + está activa, el transporte curl establece + CURLOPT_SSL_VERIFYPEER y + CURLOPT_SSL_VERIFYHOST, y las peticiones a + servidores con certificados no válidos fallan. Desactivada de forma + predeterminada por compatibilidad hacia atrás. Disponible a partir de + Yar 2.4.0. + + + + + + yar.timeout + int + + + + Tiempo de espera, en milisegundos, para las llamadas RPC emitidas por + Yar_Client y + Yar_Concurrent_Client. + + + diff --git a/reference/yar/setup.xml b/reference/yar/setup.xml index 5b1ae06e9f..66b1507a1c 100644 --- a/reference/yar/setup.xml +++ b/reference/yar/setup.xml @@ -1,36 +1,113 @@ - - + &reftitle.setup;
&reftitle.required; - - Si se desea utilizar msgpack como empaquetador, es necesario compilar - Yar con la opción de configuración ./configure --enable-msgpack - + + La biblioteca cURL es necesaria para los transportes HTTP y HTTPS. El + transporte TCP está implementado con sockets simples y no necesita + ninguna biblioteca adicional. + + + Se requiere la extensión JSON, que se + incluye con PHP y está siempre disponible a partir de PHP 8.0.0. + + + Para utilizar el empaquetador msgpack, la extensión + msgpack debe estar + instalada y Yar debe compilarse con la opción de configuración + . +
+
&reftitle.install; - + &pecl.moved; - - + + &pecl.info; &url.pecl.package;yar. + + + &pecl.windows.download.avail; + + + El código fuente está alojado en + GitHub. Para compilar + la extensión a partir del código fuente: + + + + + + Están disponibles las siguientes opciones de configure: + + + + + + + + Ubicación de la instalación de cURL, si no se encuentra en las rutas + de inclusión predeterminadas. + + + + + + + + + + Activa el empaquetador msgpack y convierte la + extensión msgpack en una dependencia opcional. + Cuando Yar se compila con esta opción, el valor predeterminado de + yar.packager pasa a ser + msgpack. + + + + + + + + + + Utiliza epoll de Linux en lugar de + select() para la multiplexación de E/S, disponible + a partir de Yar 2.1.2. Esto puede mejorar el rendimiento de + Yar_Concurrent_Client con una concurrencia + elevada. Solo tiene efecto en Linux; en las demás plataformas se + ignora silenciosamente. + + + +
+ + &reference.yar.ini; +
&reftitle.resources; - - - + + Esta extensión no define ningún tipo de recurso. +
diff --git a/reference/yar/yar-client-exception.xml b/reference/yar/yar-client-exception.xml index 786aaedd4d..770e61eb4a 100644 --- a/reference/yar/yar-client-exception.xml +++ b/reference/yar/yar-client-exception.xml @@ -1,9 +1,7 @@ - - - + - + La clase Yar_Client_Exception Yar_Client_Exception @@ -13,9 +11,12 @@
&reftitle.intro; - - - + + Clase base de las excepciones lanzadas cuando una petición falla antes, + durante o después de alcanzar el servicio remoto: se lanza una subclase + u otra según el lugar en el que se haya producido el fallo. El código de + la excepción es una de las constantes YAR_ERR_*. +
@@ -23,69 +24,30 @@ &reftitle.classsynopsis; - - Yar_Client_Exception - - - - - Yar_Client_Exception - + + + Yar_Client_Exception + - - extends - Exception - - - - &Properties; + + extends + Exception + + &InheritedProperties; + &Methods; - + &InheritedMethods; - - + +
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - - &reference.yar.entities.yar-client-exception; diff --git a/reference/yar/yar-client-packager-exception.xml b/reference/yar/yar-client-packager-exception.xml index b9eaa45ec5..80256a95af 100644 --- a/reference/yar/yar-client-packager-exception.xml +++ b/reference/yar/yar-client-packager-exception.xml @@ -1,89 +1,44 @@ - - - + - + La clase Yar_Client_Packager_Exception Yar_Client_Packager_Exception -
&reftitle.intro; - - - + + Se lanza cuando el cuerpo de la respuesta no se puede desempaquetar con el empaquetador solicitado (código de excepción YAR_ERR_PACKAGER). +
-
&reftitle.classsynopsis; - - - Yar_Client_Packager_Exception - - - - - Yar_Client_Packager_Exception - + + + Yar_Client_Packager_Exception + - - extends - Yar_Client_Exception - - - - &Properties; + + extends + Yar_Client_Exception + + &InheritedProperties; + &InheritedMethods; - - - + + + -
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - -
diff --git a/reference/yar/yar-client-protocol-exception.xml b/reference/yar/yar-client-protocol-exception.xml index 23d78d60a7..676c9ad35d 100644 --- a/reference/yar/yar-client-protocol-exception.xml +++ b/reference/yar/yar-client-protocol-exception.xml @@ -1,89 +1,53 @@ - - - + - + La clase Yar_Client_Protocol_Exception Yar_Client_Protocol_Exception -
&reftitle.intro; - - - + + Se lanza cuando la respuesta del servicio RPC viola el protocolo Yar, por ejemplo una dirección de protocolo no soportada o una cabecera de respuesta mal formada (código de excepción YAR_ERR_PROTOCOL). + + + A partir de Yar 2.4.0 esto incluye también una respuesta cuyo id de + transacción no coincide con el id de la petición a la que responde. El + cliente valida el campo i de cada respuesta; una + respuesta que lleve un id de transacción distinto y no nulo (por ejemplo, + una desviada por un proxy) se rechaza. Las respuestas con un id de + transacción igual a cero o ausente se siguen aceptando por compatibilidad + con servidores más antiguos. +
-
&reftitle.classsynopsis; - - - Yar_Client_Protocol_Exception - - - - - Yar_Client_Protocol_Exception - + + + Yar_Client_Protocol_Exception + - - extends - Yar_Client_Exception - - - - &Properties; + + extends + Yar_Client_Exception + + &InheritedProperties; + &InheritedMethods; - - - + + + -
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - -
diff --git a/reference/yar/yar-client-transport-exception.xml b/reference/yar/yar-client-transport-exception.xml index 9251225db7..e0074a6ace 100644 --- a/reference/yar/yar-client-transport-exception.xml +++ b/reference/yar/yar-client-transport-exception.xml @@ -1,89 +1,44 @@ - - - + - + La clase Yar_Client_Transport_Exception Yar_Client_Transport_Exception -
&reftitle.intro; - - - + + Se lanza cuando falla la conexión con el servicio RPC: conexión rechazada, tiempo de espera agotado o respuesta vacía (código de excepción YAR_ERR_TRANSPORT). +
-
&reftitle.classsynopsis; - - - Yar_Client_Transport_Exception - - - - - Yar_Client_Transport_Exception - + + + Yar_Client_Transport_Exception + - - extends - Yar_Client_Exception - - - - &Properties; + + extends + Yar_Client_Exception + + &InheritedProperties; + &InheritedMethods; - - - + + + -
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - -
diff --git a/reference/yar/yar-client.xml b/reference/yar/yar-client.xml index 72b426bd87..78dcaabff7 100644 --- a/reference/yar/yar-client.xml +++ b/reference/yar/yar-client.xml @@ -1,7 +1,5 @@ - - - + @@ -13,9 +11,12 @@
&reftitle.intro; - - - + + El lado cliente del framework RPC Yar. Un cliente está vinculado a una + única dirección de servicio; invocar sobre él cualquier método no + definido emite una llamada remota con ese nombre de método y los + argumentos indicados. +
@@ -23,43 +24,41 @@ &reftitle.classsynopsis; - - Yar_Client + + + Yar_Client + - - - - Yar_Client - - - &Properties; protected + int _protocol protected + string _uri protected + arraynull _options protected + bool _running - &Methods; - + + -
&reftitle.properties; @@ -67,32 +66,45 @@ _protocol - + + Solo lectura. El protocolo derivado de la dirección del servicio: una + de las constantes YAR_CLIENT_PROTOCOL_HTTP, + YAR_CLIENT_PROTOCOL_TCP o + YAR_CLIENT_PROTOCOL_UNIX. + _uri - + + Solo lectura. La dirección de servicio con la que se creó el cliente. + _options - + + Solo lectura. Un &array; con las opciones establecidas en este + cliente, indexado por las constantes YAR_OPT_*, o + &null; si no se estableció ninguna. + _running - + + Solo lectura. Indica si hay una llamada emitida por este cliente + actualmente en curso. +
- &reference.yar.entities.yar-client; diff --git a/reference/yar/yar-concurrent-client.xml b/reference/yar/yar-concurrent-client.xml index 6b3f075fe7..a964487763 100644 --- a/reference/yar/yar-concurrent-client.xml +++ b/reference/yar/yar-concurrent-client.xml @@ -1,7 +1,5 @@ - - - + @@ -13,9 +11,17 @@
&reftitle.intro; - - - + + Un ayudante estático que agrupa llamadas RPC remotas. Las llamadas + registradas con Yar_Concurrent_Client::call no + se envían inmediatamente; todas se despachan a la vez, en paralelo, + mediante Yar_Concurrent_Client::loop. + + + + Solo se admiten servicios HTTP(S) para las llamadas concurrentes. + +
@@ -23,66 +29,18 @@ &reftitle.classsynopsis; - - Yar_Concurrent_Client - - - - - Yar_Concurrent_Client - - - - &Properties; - - static - _callstack - - - static - _callback - - - static - _error_callback - - + + + Yar_Concurrent_Client + &Methods; - + - - -
- &reftitle.properties; - - - _callstack - - - - - - _callback - - - - - - _error_callback - - - - - -
- - - &reference.yar.entities.yar-concurrent-client; diff --git a/reference/yar/yar-server-exception.xml b/reference/yar/yar-server-exception.xml index 9e121f3c1e..12fbd9c029 100644 --- a/reference/yar/yar-server-exception.xml +++ b/reference/yar/yar-server-exception.xml @@ -1,9 +1,7 @@ - - - + - + La clase Yar_Server_Exception Yar_Server_Exception @@ -13,10 +11,13 @@
&reftitle.intro; - - Si un servicio lanza excepciones, se lanzará una Yar_Server_Exception en - el lado del cliente. - + + Se lanza en el lado del cliente cuando la petición RPC ha fallado en el + servidor. Si el propio método del servicio remoto lanzó una excepción, + su mensaje, código, fichero, línea y nombre de clase se transmiten, y + Yar_Server_Exception::getType devuelve el + nombre de clase de la excepción original. +
@@ -24,79 +25,57 @@ &reftitle.classsynopsis; - - Yar_Server_Exception - - - - - Yar_Server_Exception - - - - extends - Exception - - - + + + Yar_Server_Exception + + + + extends + Exception + + &Properties; protected + string _type + "Yar_Exception_Server" + &InheritedProperties; + &Methods; - + &InheritedMethods; - - + + -
&reftitle.properties; - - message - - - - - - code - - - - - - file - - - - - - line - - - - _type - + + El nombre de clase de la excepción lanzada por el servicio remoto, o + "Yar_Exception_Server" si el error no fue causado + por una excepción del código de usuario. Se lee mediante + Yar_Server_Exception::getType. +
- &reference.yar.entities.yar-server-exception; diff --git a/reference/yar/yar-server-output-exception.xml b/reference/yar/yar-server-output-exception.xml index ba8868cb11..4f82f61b3e 100644 --- a/reference/yar/yar-server-output-exception.xml +++ b/reference/yar/yar-server-output-exception.xml @@ -1,89 +1,44 @@ - - - + - + La clase Yar_Server_Output_Exception Yar_Server_Output_Exception -
&reftitle.intro; - - - + + Se lanza cuando el servidor no puede capturar la salida del método del servicio (código de excepción YAR_ERR_OUTPUT). +
-
&reftitle.classsynopsis; - - - Yar_Server_Output_Exception - - - - - Yar_Server_Output_Exception - + + + Yar_Server_Output_Exception + - - extends - Yar_Server_Exception - - - - &Properties; + + extends + Yar_Server_Exception + + &InheritedProperties; + &InheritedMethods; - - - + + + -
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - -
diff --git a/reference/yar/yar-server-packager-exception.xml b/reference/yar/yar-server-packager-exception.xml index bfdbd0226b..36878c1ed6 100644 --- a/reference/yar/yar-server-packager-exception.xml +++ b/reference/yar/yar-server-packager-exception.xml @@ -1,89 +1,44 @@ - - - + - + La clase Yar_Server_Packager_Exception Yar_Server_Packager_Exception -
&reftitle.intro; - - - + + Se lanza cuando el cuerpo de la petición no se puede desempaquetar con el empaquetador anunciado en la petición (código de excepción YAR_ERR_PACKAGER). +
-
&reftitle.classsynopsis; - - - Yar_Server_Packager_Exception - - - - - Yar_Server_Packager_Exception - + + + Yar_Server_Packager_Exception + - - extends - Yar_Server_Exception - - - - &Properties; + + extends + Yar_Server_Exception + + &InheritedProperties; + &InheritedMethods; - - - + + + -
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - -
diff --git a/reference/yar/yar-server-protocol-exception.xml b/reference/yar/yar-server-protocol-exception.xml index 72535b66fd..09b68a5edd 100644 --- a/reference/yar/yar-server-protocol-exception.xml +++ b/reference/yar/yar-server-protocol-exception.xml @@ -1,89 +1,44 @@ - - - + - + La clase Yar_Server_Protocol_Exception Yar_Server_Protocol_Exception -
&reftitle.intro; - - - + + Se lanza cuando la petición entrante viola el protocolo Yar, por ejemplo una cabecera de petición mal formada (código de excepción YAR_ERR_PROTOCOL). +
-
&reftitle.classsynopsis; - - - Yar_Server_Protocol_Exception - - - - - Yar_Server_Protocol_Exception - + + + Yar_Server_Protocol_Exception + - - extends - Yar_Server_Exception - - - - &Properties; + + extends + Yar_Server_Exception + + &InheritedProperties; + &InheritedMethods; - - - + + + -
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - -
diff --git a/reference/yar/yar-server-request-exception.xml b/reference/yar/yar-server-request-exception.xml index 25e6de130f..9573dfd794 100644 --- a/reference/yar/yar-server-request-exception.xml +++ b/reference/yar/yar-server-request-exception.xml @@ -1,89 +1,44 @@ - - - + - + La clase Yar_Server_Request_Exception Yar_Server_Request_Exception -
&reftitle.intro; - - - + + Se lanza cuando el método remoto solicitado no existe en el objeto del servidor, o no es público (código de excepción YAR_ERR_REQUEST). +
-
&reftitle.classsynopsis; - - - Yar_Server_Request_Exception - - - - - Yar_Server_Request_Exception - + + + Yar_Server_Request_Exception + - - extends - Yar_Server_Exception - - - - &Properties; + + extends + Yar_Server_Exception + + &InheritedProperties; + &InheritedMethods; - - - + + + -
- - -
- &reftitle.properties; - - - message - - - - - - code - - - - - - file - - - - - - line - - - - - -
- - -
diff --git a/reference/yar/yar-server.xml b/reference/yar/yar-server.xml index 6afb5ccdb0..5257243656 100644 --- a/reference/yar/yar-server.xml +++ b/reference/yar/yar-server.xml @@ -1,7 +1,5 @@ - - - + @@ -13,9 +11,11 @@
&reftitle.intro; - - - + + Envuelve un objeto y expone todos sus métodos públicos como un servicio + remoto, servido a través de HTTP por + Yar_Server::handle. +
@@ -23,31 +23,27 @@ &reftitle.classsynopsis; - - Yar_Server + + + Yar_Server + - - - - Yar_Server - - - &Properties; protected + object _executor + null - &Methods; - + + -
&reftitle.properties; @@ -55,14 +51,15 @@ _executor - + + El objeto cuyos métodos públicos se exponen como servicios RPC. +
- &reference.yar.entities.yar-server; diff --git a/reference/yar/yar_client/call.xml b/reference/yar/yar_client/call.xml index 4baa87d3d1..7927c53a9f 100644 --- a/reference/yar/yar_client/call.xml +++ b/reference/yar/yar_client/call.xml @@ -1,24 +1,28 @@ - - - + - Yar_Client::__call - Llamar a un servicio + Yar_Client::call + Llama a un servicio remoto &reftitle.description; - - public voidYar_Client::__call + + public mixedYar_Client::call stringmethod - arrayparameters + arrayarguments - - Emite una llamada a un método RPC remoto. - + + Emite una llamada RPC al método remoto method. Esto + es exactamente lo que ocurre cuando se invoca un método inexistente sobre + un objeto Yar_Client (véase + Yar_Client::__call); + Yar_Client::call solo existe para que los métodos + remotos llamados literalmente call o + __call sigan siendo accesibles. + @@ -27,17 +31,17 @@ method - - Nombre del método RPC remoto. - + + El nombre del método del servicio remoto. + - parameters + arguments - - Parámetros. - + + La lista de argumentos pasados al método remoto. + @@ -45,38 +49,26 @@ &reftitle.returnvalues; - - - + + Devuelve el valor de retorno del método del servicio remoto. + - - &reftitle.examples; - - Ejemplo de <function>Yar_Client::__call</function> - -some_method("parameter"); -?> -]]> - - &example.outputs.similar; - - - - + + &reftitle.errors; + + Cuando el método call no existe en el lado del + servidor, se lanza una + Yar_Server_Request_Exception. Véase + Yar_Client::__call para la lista completa de + fallos y sus clases de excepción. + - &reftitle.seealso; + Yar_Client::__call Yar_Client::setOpt diff --git a/reference/yar/yar_client/construct.xml b/reference/yar/yar_client/construct.xml index 48c86fe21c..68a4f3273b 100644 --- a/reference/yar/yar_client/construct.xml +++ b/reference/yar/yar_client/construct.xml @@ -1,36 +1,48 @@ - - - + Yar_Client::__construct - Crear un cliente + Crea un cliente &reftitle.description; - + final public Yar_Client::__construct - stringurl - arrayoptions - - - Crea un Yar_Client hacia un - Yar_Server. - + stringuri + arraynulloptionsnull + + + Crea un Yar_Client para el servicio RPC situado + en uri. + &reftitle.parameters; - url + uri - - El URL del servidor de Yar. - + + Dirección del servicio RPC. El protocolo se deriva del esquema: + http:// y https:// seleccionan el + transporte HTTP, tcp:// selecciona el transporte TCP + y unix:// selecciona el transporte por socket Unix. + + + + + options + + + Un &array; de opciones del cliente, indexado por las constantes + YAR_OPT_*, equivalente a llamar a + Yar_Client::setOpt para cada entrada. Las + opciones no válidas se omiten silenciosamente. + @@ -38,31 +50,39 @@ &reftitle.returnvalues; - - Una instancia de Yar_Client. - + + Una nueva instancia de Yar_Client. + + + + + &reftitle.errors; + + Si la URI no comienza por un esquema soportado, se lanza una + Yar_Client_Protocol_Exception. + &reftitle.examples; - Ejemplo de <function>Yar_Client::__construct</function> + Ejemplo de <methodname>Yar_Client::__construct</methodname> 1000, + YAR_OPT_PACKAGER => "json", +]); ?> ]]> - &example.outputs.similar; - - - - &reftitle.seealso; diff --git a/reference/yar/yar_client/getopt.xml b/reference/yar/yar_client/getopt.xml new file mode 100644 index 0000000000..c5dd36907e --- /dev/null +++ b/reference/yar/yar_client/getopt.xml @@ -0,0 +1,100 @@ + + + + + + Yar_Client::getOpt + Lee una opción del cliente + + + + &reftitle.description; + + public mixedYar_Client::getOpt + intname + + + Devuelve el valor establecido previamente con + Yar_Client::setOpt, o con el parámetro + options de + Yar_Client::__construct. + + + + + &reftitle.parameters; + + + name + + + Una de las constantes YAR_OPT_*, véase + Yar_Client::setOpt. + + + + + + + + &reftitle.returnvalues; + + El valor de la opción, o &false; si la opción no se ha establecido en este + cliente o el nombre de la opción es desconocido. + + + + + &reftitle.examples; + + Ejemplo de <methodname>Yar_Client::getOpt</methodname> + +setOpt(YAR_OPT_TIMEOUT, 1000); + +var_dump($client->getOpt(YAR_OPT_TIMEOUT)); +var_dump($client->getOpt(YAR_OPT_PACKAGER)); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yar_Client::setOpt + + + + + + diff --git a/reference/yar/yar_client/setopt.xml b/reference/yar/yar_client/setopt.xml index b7ecdab280..5c21b68db2 100644 --- a/reference/yar/yar_client/setopt.xml +++ b/reference/yar/yar_client/setopt.xml @@ -1,24 +1,23 @@ - - - + Yar_Client::setOpt - Establecer los contextos de una llamada + Establece opciones del cliente &reftitle.description; - - public Yar_ClientfalseYar_Client::setOpt + + public Yar_ClientboolYar_Client::setOpt intname mixedvalue - - - + + Establece una opción en el cliente. Las opciones se evalúan cuando se + emite una llamada, por lo que pueden cambiarse entre llamadas. + @@ -27,23 +26,29 @@ name - - El nombre puede ser: - YAR_OPT_PACKAGER, - YAR_OPT_PERSISTENT (Necesita soporte en el servidor), - YAR_OPT_TIMEOUT, - YAR_OPT_CONNECT_TIMEOUT, - YAR_OPT_HEADER (desde 2.0.4), - YAR_OPT_PROXY (desde 2.2.0) - + + Una de las constantes YAR_OPT_*: + + + YAR_OPT_PACKAGER — un nombre de empaquetador: php, json o, si se ha compilado con soporte para msgpack, msgpack + YAR_OPT_PERSISTENT — un indicador booleano de conexión persistente (keep-alive de HTTP) + YAR_OPT_TIMEOUT — un tiempo de espera en milisegundos, que prevalece sobre yar.timeout + YAR_OPT_CONNECT_TIMEOUT — un tiempo de espera de conexión en milisegundos, que prevalece sobre yar.connect_timeout + YAR_OPT_HEADER (a partir de 2.0.4) — un &array; de líneas de cabecera HTTP adicionales + YAR_OPT_RESOLVE (a partir de 2.1.0) — un &array; de entradas de resolución de nombres de host + YAR_OPT_PROXY (a partir de 2.2.0) — una dirección de proxy HTTP + YAR_OPT_PROVIDER (a partir de 2.3.0) — la identidad del proveedor, hasta 32 bytes + YAR_OPT_TOKEN (a partir de 2.3.0) — el token de autenticación, hasta 32 bytes + value - - - + + El valor de la opción. Un valor no válido genera una advertencia y hace + que la llamada devuelva &false;. + @@ -51,50 +56,80 @@ &reftitle.returnvalues; - - Devuelve $this en caso de éxito &return.falseforfailure;. - + + Devuelve el propio objeto cliente, lo que permite una interfaz fluida, o + &false; cuando el nombre de la opción es desconocido, el valor no es + válido o la opción no se aplica al protocolo con el que se creó el + cliente. + + + + + &reftitle.errors; + + Las condiciones que hacen que la llamada devuelva &false; generan también + una advertencia: + + + + + YAR_OPT_HEADER, + YAR_OPT_RESOLVE y + YAR_OPT_PROXY solo funcionan con el protocolo HTTP; + usarlas con un cliente tcp:// o + unix:// genera una advertencia. + + + + + YAR_OPT_RESOLVE requiere además libcurl + >= 7.21.3. + + + + + Cada opción espera un tipo de valor concreto (cadena, booleano, entero o + array), descrito en la página de + constantes. + + + &reftitle.examples; - Ejemplo de <function>Yar_Client::setOpt</function> + Ejemplo de <methodname>Yar_Client::setOpt</methodname> SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000); +/* Establece el tiempo de espera en 1s */ +$client->setOpt(YAR_OPT_TIMEOUT, 1000); -//Establecer el empaquetador a JSON -$cliente->SetOpt(YAR_OPT_PACKAGER, "json"); +/* Establece el empaquetador en JSON */ +$client->setOpt(YAR_OPT_PACKAGER, "json"); -//Establecer cabeceras personalizadas -$client->SetOpt(YAR_OPT_HEADER, array("hr1: val1", "hd2: val2")); +/* Establece cabeceras personalizadas */ +$client->setOpt(YAR_OPT_HEADER, ["X-Api-Key: value"]); -// Establecer Http Proxy -$client->SetOpt(YAR_OPT_PROXY, "127.0.0.1:8888"); +/* Enruta a través de un proxy HTTP */ +$client->setOpt(YAR_OPT_PROXY, "127.0.0.1:8888"); -/* llamar al servicio remoto */ -$result = $cliente->some_method("parameter"); +/* llama al servicio remoto */ +$result = $client->some_method("parameter"); ?> ]]> - &example.outputs.similar; - - - - &reftitle.seealso; + Yar_Client::getOpt Yar_Client::__call diff --git a/reference/yar/yar_client_exception/gettype.xml b/reference/yar/yar_client_exception/gettype.xml index 3df8b70e74..a39591a8e6 100644 --- a/reference/yar/yar_client_exception/gettype.xml +++ b/reference/yar/yar_client_exception/gettype.xml @@ -1,23 +1,27 @@ - - - + Yar_Client_Exception::getType - Recuperar el tipo de excepción + Obtiene el tipo de la excepción &reftitle.description; - + public stringYar_Client_Exception::getType - - - + + Devuelve el tipo de la excepción. Las excepciones del lado del cliente + las lanza el propio cliente (fallos de transporte, errores de protocolo, + etc.), por lo que el tipo es siempre la cadena fija + "Yar_Exception_Client". Se puede usar + Exception::getCode para distinguir cada fallo + concreto; el código es una de las constantes + YAR_ERR_*. + @@ -27,38 +31,43 @@ &reftitle.returnvalues; - + Devuelve "Yar_Exception_Client". - + &reftitle.examples; - Ejemplo de <function>Yar_Client_Exception::getType</function> + Ejemplo de <methodname>Yar_Client_Exception::getType</methodname> some_method("parameter"); +} catch (Yar_Client_Exception $e) { + var_dump($e->getType()); + var_dump($e->getCode()); +} ?> ]]> &example.outputs.similar; - &reftitle.seealso; - Yaf_Server_Exception::getType + Yar_Server_Exception::getType diff --git a/reference/yar/yar_concurrent_client/call.xml b/reference/yar/yar_concurrent_client/call.xml index 8f30d4e44c..4f6f73e87f 100644 --- a/reference/yar/yar_concurrent_client/call.xml +++ b/reference/yar/yar_concurrent_client/call.xml @@ -1,29 +1,35 @@ - - - + Yar_Concurrent_Client::call - Registrar una llamada concurrente + Registra una llamada concurrente &reftitle.description; - - public static intYar_Concurrent_Client::call + + public static intfalsenullYar_Concurrent_Client::call stringuri stringmethod - arrayparameters - callablecallback - callableerror_callback - arrayoptions + arraynullparametersnull + callablenullcallbacknull + callablenullerror_callbacknull + arraynulloptionsnull - - Registra una llamada RPC, aunque no la envía inmediatamente. Se enviará al - llamar a Yar_Concurrent_Client::loop. - + + Registra una llamada RPC remota. La petición no se envía inmediatamente; + todas las llamadas registradas se envían juntas mediante + Yar_Concurrent_Client::loop, y las respuestas se + tratan a medida que llegan. + + + + Solo se admiten URIs HTTP y HTTPS. Los transportes TCP y de sockets Unix + no están disponibles para las llamadas concurrentes. + + @@ -32,40 +38,52 @@ uri - - El URI del servidor de RPC (HTTP, TCP). - + + Dirección del servicio RPC, que comienza por + http:// o https://. + method - - El nombre del servicio (es decir, el nombre del método). - + + El nombre del método del servicio remoto. + parameters - - Parámetros. - + + La lista de argumentos pasados al método remoto. + callback - - Una retrollamada a una función, la cual será invocada mientras se devuelve la respuesta. - + + Un callable invocado cuando llega la respuesta de esta + llamada, con dos argumentos: el valor de la respuesta y un + &array; callinfo con las claves + sequence, uri y + method. Si se omite, se utiliza el + callback de + Yar_Concurrent_Client::loop. + error_callback - Si se establece esta retrollamada, Yar la invocará cuando ocurra un error. + Un callable invocado cuando esta llamada falla, con tres + argumentos: el tipo de error (uno de los códigos + YAR_ERR_*), el mensaje de error y el + &array; callinfo. Si se omite, se utiliza el + error_callback de + Yar_Concurrent_Client::loop. @@ -73,8 +91,10 @@ options - Un &array; de opciones. - Ver la lista de constantes. + Un &array; de opciones del cliente, indexado por las constantes + YAR_OPT_*, véase + Yar_Client::setOpt. Se aplica únicamente a + esta llamada. @@ -84,7 +104,14 @@ &reftitle.returnvalues; - Un ID único que se puede utilizar para identificar la llamada que es. + Devuelve el número de secuencia de la llamada registrada, un ID único que + empieza en 1 y que identifica la llamada. Devuelve + &false; cuando el cliente concurrente ya se encuentra dentro de + Yar_Concurrent_Client::loop o cuando se alcanza + el máximo de 128 llamadas registradas; en ambos casos + se emite una advertencia. Devuelve &null; si la URI o el nombre del + método están vacíos, o si la URI no es una dirección HTTP(S), con una + advertencia. @@ -107,23 +134,18 @@ function error_callback($type, $error, $callinfo) Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback"); -// Si no se especifica la retrollamada, se usará la retrollamada en bucle +/* Si no se especifica el callback, se utilizará el callback de loop() */ Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters")); -// Este servidor acepta empaquetador JSON +/* Este servidor acepta el empaquetador JSON */ Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json")); -// Tiempo de espera personalizado -Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT => 1)); +/* Tiempo de espera personalizado */ +Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT => 1000)); -// Las peticiones aún no se han enviado +/* Las peticiones todavía no se han enviado */ ]]> - &example.outputs.similar; - - - @@ -132,8 +154,6 @@ Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters Yar_Concurrent_Client::loop Yar_Concurrent_Client::reset - Yar_Server::__construct - Yar_Server::handle diff --git a/reference/yar/yar_concurrent_client/loop.xml b/reference/yar/yar_concurrent_client/loop.xml index fadf763ac3..5e7dc24026 100644 --- a/reference/yar/yar_concurrent_client/loop.xml +++ b/reference/yar/yar_concurrent_client/loop.xml @@ -1,22 +1,25 @@ - - + Yar_Concurrent_Client::loop - Enviar todas las llamadas + Envía todas las llamadas registradas y espera su respuesta &reftitle.description; - - public static boolYar_Concurrent_Client::loop - callablecallback - callableerror_callback + + public static boolnullYar_Concurrent_Client::loop + callablenullcallbacknull + callablenullerror_callbacknull + arraynulloptionsnull - Envía todas las llamadas RPC remotas registradas. + Envía en paralelo todas las llamadas registradas con + Yar_Concurrent_Client::call y bloquea hasta que + todas las respuestas hayan llegado y hayan sido tratadas. La lista de + llamadas se vacía cuando este método retorna. @@ -26,24 +29,34 @@ callback - - Si se establece esta retrollamada, Yar la invocará después de haber - enviado todas las llamadas y antes de cualquier respuesta, con un $callinfo NULL. - - - Entonces, si un usuario no especifica la retrollamada al registrar una llamada concurretne, - esta retrollamada se utilizará para manejar la resupesta, o si no, se utilizará la - retrollamada especificada durante el registro. - + + Un callable utilizado para tratar las respuestas de las + llamadas que se registraron sin su propio callback. Justo después de + que se hayan enviado todas las peticiones, se le llama además una vez + con dos argumentos &null;, antes de que llegue ninguna respuesta. + error_callback - - Si se establece esta retrollamada, Yar la invocará cuando suceda un - error. - + + Un callable utilizado para tratar los errores de las + llamadas que se registraron sin su propio callback de error. Recibe + tres argumentos: el tipo de error (uno de los códigos + YAR_ERR_*), el mensaje de error y el + &array; callinfo. + + + + + options + + + Un &array; de opciones del cliente, indexado por las constantes + YAR_OPT_*, que se aplica a cada llamada registrada + que no las sobrescriba. + @@ -51,26 +64,29 @@ &reftitle.returnvalues; - - - + + Devuelve &true; cuando todas las llamadas registradas han sido tratadas, + o cuando no se ha registrado ninguna llamada. Devuelve &false; si el + cliente concurrente ya se está ejecutando dentro de otro bucle; en ese + caso se emite una advertencia. + &reftitle.examples; - Ejemplo de <function>Yar_Concurrent_Client::loop</function> + Ejemplo de <methodname>Yar_Concurrent_Client::loop</methodname> "json")); - //this server accept json packager -Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT=>1)); - //custom timeout -Yar_Concurrent_Client::loop("callback", "error_callback"); //send the requests, - //the error_callback is optional +/* si no se especifica el callback, se utilizará el callback de loop() */ +Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters")); + +Yar_Concurrent_Client::loop("callback", "error_callback"); ?> ]]> &example.outputs.similar; - &reftitle.seealso; Yar_Concurrent_Client::call Yar_Concurrent_Client::reset - Yar_Server::__construct - Yar_Server::handle diff --git a/reference/yar/yar_concurrent_client/reset.xml b/reference/yar/yar_concurrent_client/reset.xml index 8300274815..79f39f4fee 100644 --- a/reference/yar/yar_concurrent_client/reset.xml +++ b/reference/yar/yar_concurrent_client/reset.xml @@ -1,22 +1,30 @@ - - + Yar_Concurrent_Client::reset - Limpiar todas las llamadas registradas + Limpia todas las llamadas registradas &reftitle.description; - + public static boolYar_Concurrent_Client::reset - - Limpia todas las llamadas registradas - + + Descarta todas las llamadas registradas con + Yar_Concurrent_Client::call que todavía no se + han enviado. + + + + Yar_Concurrent_Client::loop vacía la lista de + llamadas automáticamente una vez que ha terminado, por lo que reset solo + es necesario para abortar un lote que nunca se envió. + + @@ -26,8 +34,12 @@ &reftitle.returnvalues; - - + + Devuelve &true;, o &false; cuando el cliente concurrente se encuentra + actualmente dentro de + Yar_Concurrent_Client::loop, en cuyo caso se + emite un error de nivel E_WARNING. + @@ -36,13 +48,18 @@ Ejemplo de <function>Yar_Concurrent_Client::reset</function> ]]> - &example.outputs.similar; - - - @@ -51,8 +68,6 @@ Yar_Concurrent_Client::call Yar_Concurrent_Client::loop - Yar_Server::__construct - Yar_Server::handle diff --git a/reference/yar/yar_server/construct.xml b/reference/yar/yar_server/construct.xml index d347871537..65f13ca8f7 100644 --- a/reference/yar/yar_server/construct.xml +++ b/reference/yar/yar_server/construct.xml @@ -1,36 +1,35 @@ - - - + Yar_Server::__construct - Registrar un servidor + Crea un servidor RPC &reftitle.description; - + final public Yar_Server::__construct - Objectobj - - - Configurar un Servidor Yar HTTP RPC. Todos los métodos públicos de $obj serán - registrados como un servicio RPC. - + objectexecutor + + + Crea un servidor RPC HTTP de Yar. Todos los métodos públicos de + executor se registran como servicios RPC. + &reftitle.parameters; - obj + executor - - Un objeto, todos sus métodos publicos serán registrados como - servicioes RPC. - + + Cualquier objeto cuyos métodos públicos deban exponerse como + servicios RPC. Los métodos protegidos y privados, y los métodos cuyo + nombre empieza por un guion bajo, no se exponen. + @@ -38,23 +37,23 @@ &reftitle.returnvalues; - + Una instancia de Yar_Server. - + &reftitle.examples; - Ejemplo de <function>Yar_Server::__construct</function> + Ejemplo de <methodname>Yar_Server::__construct</methodname> handle(); ?> ]]> - &example.outputs.similar; - - - - &reftitle.seealso; - - Yar_Server::handle - + + + Yar_Server::handle + + diff --git a/reference/yar/yar_server/handle.xml b/reference/yar/yar_server/handle.xml index 2b66eb5c3a..6af8657574 100644 --- a/reference/yar/yar_server/handle.xml +++ b/reference/yar/yar_server/handle.xml @@ -1,30 +1,43 @@ - - - + Yar_Server::handle - Iniciar un servidor RPC + Inicia el servidor RPC &reftitle.description; - - public bool Yar_Server::handle - + + public boolYar_Server::handle + - - Inicia un servidor de HTTP de RPC listo para aceptar peticiones RPC. - - - Las llamadas RPC usuales serán emitidas como peticiones POST de HTTP. Si se emite - una petición GET de HTTP al URI, se imprimierá en la página la información - del servicio (la sección comentada anteriormente). - - - + + Empieza a atender la petición RPC entrante. + + + + Las llamadas RPC habituales se emiten como peticiones HTTP POST. Si en + su lugar se emite una petición HTTP GET, se muestra la página de + información del servicio, generada a partir de los métodos públicos y + de sus bloques de documentación del objeto ejecutor. Este + comportamiento se puede desactivar con la directiva + yar.expose_info, + en cuyo caso una petición GET lanza una + Yar_Server_Exception. + + + + + A partir de Yar 2.3.0, la página de información del servicio se puede + personalizar definiendo un método protected llamado + __info en el objeto ejecutor. Cuando llega una + petición GET, Yar llama a este método pasándole el marcado de la página + que mostraría en otro caso; si el método devuelve una &string;, esa + cadena se envía al cliente en lugar de la página predeterminada. + + @@ -34,25 +47,98 @@ &reftitle.returnvalues; + + Devuelve &true;. + + + + + &reftitle.errors; - boolean + + Errores de <methodname>Yar_Server::handle</methodname> + + + + Condición + Excepción + + + + + + El método remoto lanzó una excepción. + + + Yar_Server_Exception (con el nombre + de clase original en su propiedad _type). + + + + + El método remoto no se encontró o no es público. + + + Yar_Server_Request_Exception. + + + + + El cuerpo de la petición no se pudo desempaquetar. + + + Yar_Server_Packager_Exception. + + + + + La petición está mal formada a nivel de protocolo. + + + Yar_Server_Protocol_Exception. + + + + + La salida del servidor no se pudo capturar. + + + Yar_Server_Output_Exception. + + + + + La autenticación falló, o se solicitó la página de información + mientras + yar.expose_info está + desactivada. + + + Yar_Server_Exception con el código + YAR_ERR_FORBIDDEN. + + + + +
&reftitle.examples; - Ejemplo de <function>Yar_Server::handle</function> + Ejemplo de <methodname>Yar_Server::handle</methodname> handle(); ?> ]]> - &example.outputs.similar; - + + + Personalización de la página de información del servicio con + <literal>__info</literal> (a partir de Yar 2.3.0) + handle(); +?> ]]> - + - &reftitle.seealso; - - Yar_Server::__construct - + + + Yar_Server::__construct + +
diff --git a/reference/yar/yar_server_exception/gettype.xml b/reference/yar/yar_server_exception/gettype.xml index b5a6148aa2..b0db002bb9 100644 --- a/reference/yar/yar_server_exception/gettype.xml +++ b/reference/yar/yar_server_exception/gettype.xml @@ -1,23 +1,24 @@ - - - + Yar_Server_Exception::getType - Recuperar el tipo de excepción + Obtiene el tipo de la excepción &reftitle.description; - - public stringYar_Server_Exception::getType + + public stringintYar_Server_Exception::getType - - Obtener el tipo original de la excepción lanzada por el servidor - + + Cuando un método remoto lanza una excepción, el servidor incrusta la + excepción original en la respuesta y el cliente la relanza como una + Yar_Server_Exception. Este método devuelve + el nombre de clase de esa excepción original. + @@ -27,19 +28,21 @@ &reftitle.returnvalues; - - string - + + El nombre de clase de la excepción lanzada por el servicio remoto, o + "Yar_Exception_Server" cuando la excepción del lado + del servidor no llevaba ningún nombre de clase. + &reftitle.examples; - Ejemplo de <function>Yar_Server_Exception::getType</function> + Ejemplo de <methodname>Yar_Server_Exception::getType</methodname> handle(); ?> - -//Client.php +]]> + + +getType()); var_dump($e->getMessage()); } +?> ]]> &example.outputs.similar; @@ -74,11 +81,10 @@ string(6) "client" - &reftitle.seealso; - + Yar_Client_Exception::getType