Kernel de TuEntidad.es
La parte que encargada del tratamiento de la lectura/escritura de datos de forma estándar de toda la Plataforma Social "TuEntidad.es" se llama Kernel. Por norma general, se encuentra como subdominio (denominado kernel) de la página de la Plataforma Social. En casos puntuales donde es necesario, existe un archivo dentro del propio visor que redirecciona internamente, por ejemplo a través de una implementación proxy-php (crossdomain) en el caso del visor lotienes, a kernel. No todos los visores implementan un proxy, ya que permiten conectarse directamente al kernel. El uso del proxy oficial permite un balanceo de carga entre máquinas que mejoran los tiempos de carga usando diferentes hilos del kernel.
Los visores en otros lenguajes se caracterizan por acceder al kernel directamente. Es el caso de las versiones en Flash y ejecutables de escritorio. La necesidad del proxy aparece en los visores que utilizan JavaScript, el cual no permite acceder a dominios fuera del actual.
Protocolo del Kernel
Actualmente hay una serie de acciones no estandarizadas todavía como son el registro de nuevos usuarios y recuperación de claves de acceso, el inicio/cierre de sesión, y la subida de medios locales. Aquellas acciones estandarizadas se les llama peticiones.
Peticiones
Las peticiones (consultas y escrituras) siguen el modelo de conjunto de órdenes. Las órdenes están separadas por el signo dólar ($) y se numeran internamente con un autoincremental natural que empieza en cero.
Ordenes
Cada orden, sigue el modelo de conjunto de componentes. Cada componente se separa por el signo almohadilla (#).
Devuelve, generalmente, una estructura o un conjunto (vector, matriz, etc) de estructuras.
Componentes
Las componentes de cada orden están separadas por el signo almohadilla (#).
Iteradores
Cada identificador numérico incluido en la componente [1] de cada orden puede ser un valor estático (identificador numérico natural) o un valor dinámico.
- Los valores estáticos se generan en los visores y se envían directamente para su tratamiento.
- Los valores dinámicos se les llama iteradores. Los iteradores son referencias numéricas a órdenes anteriores generados en tiempo de procesamiento en el propio kernel, separados por comas (,).
Funciones
Al final de cada órden pueden aparecer, separadas por el signo pipa (|), una o más funciones. Las funciones tienen una estructura parecida a la componentes de la orden.
Tipos de Órdenes del Kernel
El protocolo del Kernel distingue dos tipos órdenes: La de consulta, y la escritura, que se separan en dos archivos de petición .php distintos dentro del kernel, consulta.php y escritura.php.
Las componentes de cada orden están separadas por el signo almohadilla (#).
Consultas
Las consultas devuelven estructuras. Las componentes de una consulta son:
- [0]: El tipo de objeto (a para los álbumes, c para los contactos, etc).
- [1]: El identificador numérico del objeto (id>0 para los propios, o id<0 para los comunes) seleccionado.
- [2]: El nombre de la estructura -matriz o vector o valor- (generalmente datos o entidad).
- [3]: La componente numérica. En caso de ser matriz, la fila; o de ser vector, la componente.
- [4]: La componente numérica. En caso de haber sido una matriz, la componente del vector seleccionado en la anterior componente de la consulta.
Un ejemplo de consulta podría ser este, que es la petición de la fila 1 de los datos de un usuario, en la que se encuentra su nombre, y apellidos. Esta función es pública y accesible por cualquier usuario o visitante:
|--- componentes ---| u # 1 # datos # 1 [0] [1] [2] [3] --- Dame, [0] - del objeto usuario (u), [1] --- con identificador 1, [2] ----- su matriz datos, [3] -------- la fila 1
Escrituras
Al igual que el anterior, estas órdenes de escritura se dividen en componentes. La última componente ([∞]) es el valor que se le asignará. Generalmente no devuelven nada, y solo en casos concretos, por ejemplo cuando se utilizan los comodines (+) devuelven los valores de esas componentes que se ignoraron.
Ese es el caso de, por ejemplo, la petición de un mensaje nuevo:
|---- componentes ----|------------- valor --------------| n # + # 1 : 1 : -2: # urlescape(asunt) : urlescape(txt) [0] [1] [2] [∞] --- Escribe, [0] - un mensaje (n), [1] --- nuevo (+), [2] ----- para el buzón 1, del usuario 1, con plantilla -2 (es la plantilla de S&E), [3] -------- cuyo contenido será: el asunto asunt, y el texto txt
En donde la componente [0] se conoce (n), la [1] es el carácter comodín más (+) que indica que es siguiente al último, y el resto son conocidos. Este ejemplo es el que se usa para enviar mensajes de Sugerencias y Errores al buzón del administrador.
Órdenes genéricas
Aunque actualmente no se permite, es posible que durante las próximas revisiones del protocolo de TuEntidad.es aparezca un tercer tipo de orden que englobará las consultas y escrituras. Ésto permitirá que en una misma petición pueda haber órdenes de lectura junto con órdenes de escritura.
La sintaxis quedará mucho más escalable.
|--------------------- componentes ---------------------|------- argumentos -------| objeto # identificador # coordenada1 : c2 : ... : cN # argumento1 : a2 ... : a3 [0] [1] [2] [3]
- Componentes.
- [0] objeto: el tipo de objeto (con una letra) que se va a seleccionar.
- [1] identificador: el identificador del objeto deseado.
- [2] coordenadas: las coordenadas que apuntarán al dato separadas por dos puntos.
- Si no hay coordenadas, devuelve la Matriz completa.
- La primera coordenada determina la fila completa de la Matriz como Vector .
- La segunda coordenada determina la Columna del vector previo que incluye el Valor que se devolverá.
- Argumentos.
- [3] objeto: Sólo se incluye si se trata de una escritura. Son datos separados por dos puntos.
Cada argumento
Estructuras del Kernel
Las Estructuras de Datos del Kernel son Estructuras de Datos que almecenan y suministran información sobre los diferentes elementos que hay implementados en la Plataforma Social "TuEntidad.es".
Cada estructura está formada por tres componentes separadas por el signo almohadilla (#).
- [0]: El Tipo de objeto (a para los álbumes, c para los contactos, etc).
- [1]: El Identificador numérico natural del objeto (id>0 para los propios de la Red Social, o id<0 para los comunes) seleccionado.
- [2]: El Valor, vector -valores separados por dos puntos (:)- o matriz -vectores separados por salto de línea (\n)-.
Objetos
Según se marca en la definición de Red Social, los Tres Objetos Básicos de Identidad Social son los objetos de tipo entidad, conjunto, y entrada. Por ese motivo, la organización de objetos en las Estructuras del Kernel de TuEntidad.es se agrupan según las características generales de cada objeto.
Es posible que algunos objetos se unifiquen en posteriores versiones del protocolo.
Entidades
Los objetos de tipo entidades son aquellos que tengan existencia real, autonomía, y diferenciación e individualidad'. usuario, empresa, asociación, organismo, etc.
Aunque se podrían dividir entre esos, este tipo está más integrado en la la norma Tres Objetos Básicos de Identidad Social (TOBIS) y sólo se distinguen los usuarios, los cuales tienen reservado el nombre u.
Usuarios (u)
Conjuntos
Son objetos que se definen porque son un conjunto de otros objetos.
Álbumes (a)
Conjunto de Medios.
Buzones (b)
Conjunto de Mensajes.
Contactos (c)
Conjunto de Grupos.
Filtros (f)
Conjunto de Objetos.
Grupos (g)
Conjunto de Entidades y Álbumes.
Entradas
Medios (m)
Mensajes (n)
Plantillas (p)
Diarios (d)
(*) Por ahora, los diarios se consideran objetos medios ya que no son un conjunto de entradas.
Tablones (t)
(*) Por ahora, los tablones se consideran objetos medios ya que no son un conjunto de entradas.
Logs (l)
(*) Por ahora, los logs (blogs) se consideran objetos medios ya que no son un conjunto de entradas.