Antes de comenzar a programar un cliente para el xmms2 tendremos que investigar como funciona, como es que logra comunicarse con un o muchos clientes al mismo tiempo.

Para interactuar con el servicio xmms2d es necesario hacerlo por medio de un intermediario (middleware) que llevara la comunicación entre el servidor y el cliente.

Es decir, el demonio xmms2d se ejecuta a la espera de peticiones, mismas que le serán pedidas por el intermediario; en la imagen superior vemos a dos objetos de tipo libxmmsipc quienes son los que están enlazados y pueden comunicarse en el mismo lenguaje, empero, el de la izquierda se entiende con el demonio, y el de la derecha con el cliente. A estos dos en conjunto les llamamos Middleware.

Afortunadamente existe una libreria en python que ayudara a actuar como intermediario entre el demonio y nuestro cliente. Esta libreria es llamada python-xmmsclient .

Los desarrolladores de xmms2 nos proponen algunas reglas de deberemos seguir para tener un buen funcionamiento entre nuestro cliente y el servidor, y no afectemos configuraciones que todos los clientes utilizan.

Entre ellas, respetar la variable de entorno  XMMS_PATH , o si nuestro cliente guarda configuraciones podremos hacerlo dentro del directorio apuntado por $ XDG_CONFIG_HOME . Así como algunas otras mas (para mas información aquí ).

Los desarrolladores nos han facilitado tanto el trabajo que disponemos de Medialib , que es una función que parsea la información Tag de un archivo de audio, poniéndola en una tabla que fácilmente podremos manipular.

Existen dos modos de comunicaciones básicamente, un modo síncrono y uno asíncrono, cada uno con su respectiva función para determinados casos. Vamos, que si desarrollamos un cliente en modo texto plano para consola, podremos usar un modo síncrono sin ningún problema, pero si nuestra aplicación será algo mas sofisticado y gráfico, lo mas recomendable es usar una comunicación asíncrona.

¿Por que asíncrona? Bien, para que me puedas entender mejor voy a tratar de explicar algunas funciones que se llevan a cabo en la comunicación cliente-servidor.

Pongámoslo fácil, cuando nosotros ponemos play, estamos ejecutando un comando , y este comando envía una señal al demonio que interpreta y regresa un resultado , mismo que el cliente puede interpretar a como le de la gana. Pero, supongamos que abrimos 2 clientes, ambos saben que existe una lista de reproducción cargada, en el primer cliente se nos ocurre borrar esta lista, entonces el segundo seguirá teniendo la lista completa sin sufrir ningún efecto y esto podría causarle problemas, por lo tanto, este debía ser avisado (por medio de una emisión del demonio) del cambio y tener la misma información que el primero, por ello que la comunicación debería ser asíncrona.

Por ahora todo ha ido perfecto, en los próximos post's tratare de mostrarles como hacer una conexión con un sencillo script en python.

Enlaces:

Writing Xmms2 Clients

Jorge Hernandez :: http://jorgeluis.com.mx

Publicaciones que te pueden interesar...

Lo nuevo en Python 3

Python y xmms2