click for front page

Usuario:
Anonymous User

CambiosRecientes VerAyuda   La última edición fue hecha por nekmo, el 2012-08-10 20:05:59

PySorex?

Repositorio Mercurial: http://hg.jcea.es/PySorex/

PySorexAPI

Directorios y archivos

Directorios y archivos de almacenamiento

Hilos de ejecución

  1. Un hilo de entrada de Stanzas
  2. Un hilo de salida de Stanzas
  3. Un número variable de hilos para el procesado de las stanzas
  4. Un hilo para la base de datos
  5. Un hilo para la cola de clientes y servidores conectados
  6. Hilo principal a la espera de que se de la orden de cierre del servidor

Almacenamiento de datos

Los tipos de datos que se almacenan pueden diferenciarse en: El primero, para facilitar su edición manual, se haría con configpaser. El segundo, consistiría en bases de datos creados y mantenidos por el wrapper de la base de datos. El primero contendría datos para el funcionamiento del servidor, tales como el puerto, dominio, tipo de base de datos a usar... Y el segundo, datos de los usuarios, mensajes pendientes por entregar, etc. Opcionalmente, los plugins pueden gestionar datos con métodos propios, como almacenar logs de las conversaciones de las salas en XML.

Procesamiento de entrada de datos

  1. Un cliente o servidor establece envía una Stanza.
  2. Se solicita al hilo de gestión de conexiones de usuarios y servidores activo, el objeto Connection para la conexión.
    1. Si no hay un objeto Connnection para la conexión (es una nueva conexión), se crea.
  3. La Stanza entra en la lista de stanzas a procesar (hilo main).
  4. Se parsea la Stanza. Si la stanza no cumple los estándares xml, se desecha.
    1. Si el objeto Connection tiene como propiedad que el servidor o cliente no está autentificado, se interpreta la Stanza mediante el plugin correspondiente de auth.
    2. Si el cliente o servidor está autentificado, se continua en los siguientes pasos.
  5. se comprueba que la stanza es válido (el from es correcto).
  6. Se crea un objeto Stanza de la stanza parseado. El objeto stanza añade funcionalidades como agregar un callback, responder al remitente devolviendo la stanza, añadir errores, etc.
  7. Mediante eventos xpath, se comprueba qué XEPs? y partes del Core (pysorex/xmpp) tienen como evento el susodicho Stanza.
  8. La Stanza es devuelto junto con el objeto Connection como evento.
  9. Opcionalmente, la función que recibe el evento, puede hacer ejecutar un nuevo evento. Por ejemplo, una función que recibe los stanzas de los mensajes, puede enviar el callback "message" para los XEPs? y otros plugins que necesitan recibir los mensajes. La Stanza entonces, vendría en un objeto Message que es heredado de Stanza, que agrega nuevas funcionalidades al objeto Stanza específicas para los mensajes.

Procesamiento de salida de datos

  1. Si la stanza es un objeto Stanza o un elemento Element construido mediante ElementTree? o Lxml, se crea el string del árbol XML.
  2. Se añade el xml a la cola junto con el objeto Connection y el callback que se ejecutará tras enviarse la stanza.
  3. Si al enviar la stanza la conexión del Connection se ha roto (el cliente o servidor se ha desconectado), en el callback se pondrá como argumento que la entrega falló o el mensaje fue almacenado para ser entregado para más tarde. Si el cliente no pertenece al servidor, deberá ser este es que notifique del error. Si es el servidor remoto el que está desconectado, el mensaje se desecha y la entrega fallará.


CambiosRecientes VerAyuda   editar esta página (requiere autentificación)