Difference between revisions of "FPC and DBus/es"

From Lazarus wiki
Jump to navigationJump to search
(New page: {{FPC and DBus}} === Documentation === DBUS is a very new GNU library that implements inter-process communication. It's the default library of this kind for GNU applications. This libra...)
 
m (Fixed syntax highlighting)
 
(26 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{FPC and DBus}}
+
{{FPC and DBus}}[[category:Castellano]][[category:Español]]
  
=== Documentation ===
+
=== Documentación ===
  
DBUS is a very new GNU library that implements inter-process communication. It's the default library of this kind for GNU applications.
+
DBUS es una librería GNU relativamente nueva que implementa la comunicación entre procesos mediante el paso de mensajes. Es la librería por defecto dentro de su genero para aplicaciones GNU.
  
This library provides a simple way for applications to talk to one another, using a bus sytem. These headers are the translation of the low-level c API for dbus. In the future it is desirable that this headers be wrapped around a class to make their use easier.
+
Esta librería provee de lo necesario para que las aplicaciones se comuniquen unas con otras, utilizando el bus del sistema. Estas cabeceras (headers) son la traducción de la [http://dbus.freedesktop.org/doc/dbus/api/html/index.html API C de bajo nivel]. En un futuro sería deseable que estas cabeceras se envolviesen en una clase para facilitar su uso.
  
==== Common Code ====
+
==== Código Común ====
  
Independently from what you want to achieve, a lot of the code for a software that uses DBUS will be very similar. This is the startup and finalization code. On the startup you need to connect to the bus. Usually there is a system and a session bus. Depending on the configuration of the system you may not have access to the system bus. Next you need to request a name on the bus. Bellow is a simple startup code.
+
Independientemente de lo que se quiera lograr con un programa, una gran cantidad del código contenido en el mismo tendrá grandes similitudes por el hecho de utilizar DBUS.
 +
Esta similitud la tendremos en el código de comienzo y finalización. En el comienzo porque se hace necesaria la conexión con el bus. Usualmente hay un sistema y una sesión de bus. Dependiendo de la configuración del sistema puede que no se tenga acceso al bus del sistema. A continuación se necesita una petición para obtener un nombre en el bus. Lo siguiente muestra de forma simplificada el código para el comienzo:
  
<pre>
+
<syntaxhighlight lang=pascal>
 
var
 
var
 
   err: DBusError;
 
   err: DBusError;
Line 17: Line 18:
 
   ret: cint;
 
   ret: cint;
 
begin
 
begin
   { Initializes the errors }
+
   { Inicialización de errores }
 
   dbus_error_init(@err);
 
   dbus_error_init(@err);
 
    
 
    
   { Connection }
+
   { Conexión }
 
   conn := dbus_bus_get(DBUS_BUS_SESSION, @err);
 
   conn := dbus_bus_get(DBUS_BUS_SESSION, @err);
  
Line 31: Line 32:
 
   if conn = nil then Exit;
 
   if conn = nil then Exit;
 
    
 
    
   { Request the name of the bus }
+
   { Petición del nombre del bus }
 
   ret := dbus_bus_request_name(conn, 'test.method.server', DBUS_NAME_FLAG_REPLACE_EXISTING, @err);
 
   ret := dbus_bus_request_name(conn, 'test.method.server', DBUS_NAME_FLAG_REPLACE_EXISTING, @err);
  
Line 43: Line 44:
  
 
   ....
 
   ....
</pre>
+
</syntaxhighlight>
  
After you no longer need the bus you should close the connect. A good place to do this on most cases is right before the application terminates.
+
Después, una vez que ya no se necesita el bus, se debería cerrar la conexión. Una buena forma de hacerlo en la mayoría de los casos es justamente antes del punto donde la aplicación termina:
  
<pre>
+
<syntaxhighlight lang=pascal>
   { Finalization }
+
   { Finalización }
 
   dbus_connection_close(conn);
 
   dbus_connection_close(conn);
</pre>
+
</syntaxhighlight>
  
==== Sending a Signal ====
+
Si queréis se puede comparar este código con el que se encuentra en http://www.matthew.ath.cx/misc/dbus escrito en C.
  
==== Receiving a Signal ====
+
==== Enviando una señal ====
  
==== Calling a Method ====
+
==== Recibiendo una señal ====
  
==== Responding to Method calls ====
+
==== Llamando a un método ====
  
=== Authors ===
+
==== Respondiendo a llamadas a método ====
 +
 
 +
=== Autores ===
  
 
[[User:Sekelsenmat|Felipe Monteiro de Carvalho]]
 
[[User:Sekelsenmat|Felipe Monteiro de Carvalho]]
  
  
=== License ===
+
=== Licencia ===
  
  
=== Download ===
+
=== Descarga ===
  
Status: Beta
+
Estado: Beta
  
=== Subversion ===
+
=== Subversión ===
  
The FPC package for dbus resides in packages/[[dbus]] in the FPC (2.2.2/2.3.x+) packages tree.
+
El paquete de FPC para dbus se encuentra en packages/[[dbus]] en el árbol de paquetes de  FPC (2.2.2/2.3.x+).  
  
You can download the subversion version of this project using this command:
+
Se puede descargar la subversión de esta proyecto utilizando el mandato:
  
 
svn checkout http://svn.freepascal.org/svn/fpc/trunk/packages/dbus dbus
 
svn checkout http://svn.freepascal.org/svn/fpc/trunk/packages/dbus dbus
  
You can also download a full fpc 2.2.2+/2.3.1 repository and it will be included.
+
Por otra parte se puede descargar un repositorio completo de fpc 2.2.2+/2.3.1 que ya lo lleva incluido.
  
=== Bug Reporting ===
+
=== Informe sobre errores ===
  
Tests are necessary to verify if all functions and structures are declared properly. Tests were done on Windows,FreeBSD and Linux operating systems. It is necessary to test if the modules work correctly in other operating system.
+
Se precisan pruebas para verificar si todas las funciones y estructuras están declaradas correctamente. Se han realizado ya pruebas para los sistemas operativos Windows, FreeBSD y Linux. Se necesitan pruebas adicionales en otros sistemas operativos para saber si el funcionamiento de estos módulos es correcto.
  
You can post Bug Reports here:
+
Puedes enviar los informes sobre errores aquí si es necesario:
  
=== Change Log ===
+
=== Registro de cambios ===
  
*??.??.06 DBus headers version 0.1
+
*??.??.06 cabeceras DBus (versión 0.1)
# Under construction
+
# En construcción
  
=== Help ===
+
=== Ayuda ===
  
Please send help requests to the Free Pascal mailling list or on apache-modules mailling list.
+
Podéis enviar solicitudes de ayuda a las listas de correo de FreePascal o a las listas de correo en apache-modules.
  
=== External Links ===
+
=== Enlaces Externos ===
  
* [http://www.matthew.ath.cx/misc/dbus] - A Tutorial about using the DBUS C API
+
* [http://www.matthew.ath.cx/misc/dbus] - Una tutoría sobre la utilización de la API de DBUS C.
 +
* [http://dbus.freedesktop.org/doc/dbus-tutorial.html ] - Tutoría en freedesktop.org.
 +
* [http://techbase.kde.org/Development/Tutorials/D-Bus/Introduction] - Tutoría introductoria en KDE.org.
 +
* [http://techbase.kde.org/Development/Tutorials/D-Bus/Introduction_(es)] - Lo mismo que lo anterior pero en Español (he traducido el artículo que viene en inglés en la web de KDE lo mejor que he podido y aún me queda parte para terminarlo pero creo que se entiende bastante bien).
 +
* [http://techbase.kde.org/Development/Tutorials_%28es%29#D-Bus Indice D-Bus en KDE]: traduciré el resto de los puntos al español en la medida que tenga tiempo libre.

Latest revision as of 02:02, 16 February 2020

English (en) español (es)

Documentación

DBUS es una librería GNU relativamente nueva que implementa la comunicación entre procesos mediante el paso de mensajes. Es la librería por defecto dentro de su genero para aplicaciones GNU.

Esta librería provee de lo necesario para que las aplicaciones se comuniquen unas con otras, utilizando el bus del sistema. Estas cabeceras (headers) son la traducción de la API C de bajo nivel. En un futuro sería deseable que estas cabeceras se envolviesen en una clase para facilitar su uso.

Código Común

Independientemente de lo que se quiera lograr con un programa, una gran cantidad del código contenido en el mismo tendrá grandes similitudes por el hecho de utilizar DBUS. Esta similitud la tendremos en el código de comienzo y finalización. En el comienzo porque se hace necesaria la conexión con el bus. Usualmente hay un sistema y una sesión de bus. Dependiendo de la configuración del sistema puede que no se tenga acceso al bus del sistema. A continuación se necesita una petición para obtener un nombre en el bus. Lo siguiente muestra de forma simplificada el código para el comienzo:

var
  err: DBusError;
  conn: PDBusConnection;
  ret: cint;
begin
  { Inicialización de errores }
  dbus_error_init(@err);
  
  { Conexión }
  conn := dbus_bus_get(DBUS_BUS_SESSION, @err);

  if dbus_error_is_set(@err) <> 0 then
  begin
    WriteLn('Connection Error: ' + err.message);
    dbus_error_free(@err);
  end;
  
  if conn = nil then Exit;
  
  { Petición del nombre del bus }
  ret := dbus_bus_request_name(conn, 'test.method.server', DBUS_NAME_FLAG_REPLACE_EXISTING, @err);

  if dbus_error_is_set(@err) <> 0 then
  begin
    WriteLn('Name Error: ' + err.message);
    dbus_error_free(@err);
  end;
  
  if ret <> DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER then Exit;

  ....

Después, una vez que ya no se necesita el bus, se debería cerrar la conexión. Una buena forma de hacerlo en la mayoría de los casos es justamente antes del punto donde la aplicación termina:

  { Finalización }
  dbus_connection_close(conn);

Si queréis se puede comparar este código con el que se encuentra en http://www.matthew.ath.cx/misc/dbus escrito en C.

Enviando una señal

Recibiendo una señal

Llamando a un método

Respondiendo a llamadas a método

Autores

Felipe Monteiro de Carvalho


Licencia

Descarga

Estado: Beta

Subversión

El paquete de FPC para dbus se encuentra en packages/dbus en el árbol de paquetes de FPC (2.2.2/2.3.x+).

Se puede descargar la subversión de esta proyecto utilizando el mandato:

svn checkout http://svn.freepascal.org/svn/fpc/trunk/packages/dbus dbus

Por otra parte se puede descargar un repositorio completo de fpc 2.2.2+/2.3.1 que ya lo lleva incluido.

Informe sobre errores

Se precisan pruebas para verificar si todas las funciones y estructuras están declaradas correctamente. Se han realizado ya pruebas para los sistemas operativos Windows, FreeBSD y Linux. Se necesitan pruebas adicionales en otros sistemas operativos para saber si el funcionamiento de estos módulos es correcto.

Puedes enviar los informes sobre errores aquí si es necesario:

Registro de cambios

  • ??.??.06 cabeceras DBus (versión 0.1)
  1. En construcción

Ayuda

Podéis enviar solicitudes de ayuda a las listas de correo de FreePascal o a las listas de correo en apache-modules.

Enlaces Externos

  • [1] - Una tutoría sobre la utilización de la API de DBUS C.
  • [2] - Tutoría en freedesktop.org.
  • [3] - Tutoría introductoria en KDE.org.
  • [4] - Lo mismo que lo anterior pero en Español (he traducido el artículo que viene en inglés en la web de KDE lo mejor que he podido y aún me queda parte para terminarlo pero creo que se entiende bastante bien).
  • Indice D-Bus en KDE: traduciré el resto de los puntos al español en la medida que tenga tiempo libre.