Teoria de Yuneta

Yuneta es

Sistema de programación basado en eventos.

Eventos procesados por elementos basados objetos autómatas (máquina estados finito). Hablando de eventos: BPF: una revolución

Sistema de programación basado en Clase G

y sus instancias Objetos G, que se organizan en un árbol jerárquico de objetos llamado Yuno.

Código

El código se encuentra publicado en GitHub:

Tiene su origen en la librería GinsFSM desarrollada en Python.

Clase G

Clase G es una clase definida por programación, diferente de la definida en los lenguajes.

Está compuesta de:

  • Sección de Atributos:
    • Accesible desde el exterior, forma parte del Interface.

    • Define la configuración y por lo tanto el comportamiento de la clase.

  • Sección de Metodos de Clase:
    • Accesible desde el exterior indirectamente a través de las funciones del API de Yuneta.

    • Implementa la funcionalidad de la clase.

    • Los métodos de clase son una lista fija de métodos que un clase puede, o no, implementar.

    • El método mt_stats permite que la clase pueda publicar sus estadísticas.

  • Sección de Comandos:
    • Accesible desde el exterior, forma parte del Interface.

    • Ejecuta comandos sobre la instancia de la clase, al estilo de comandos de consola.

  • Sección de métodos privados:
    • No accesible desde el exterior.

    • Uso interno de la clase.

  • Automata (Máquina de Estados Finitos):

Un registro global de clases permite acceder a la definición de la clase para poder crear instancias u Objetos G de dicha clase.

Objetos G

Un objecto G es una instancia de una clase G.

Los objetos G se organizan en un árbol jerárquico, mediante una relación padre-hijo. Este árbol de objetos es conocido como Yuno.

Dentro de este árbol de objetos o Yuno, algunos de estos objetos son de uso interno, mientras que otros dan un Servicio al exterior mediante el Interface público.

Los Yunos viven dentro de un Nodo de Red, y pueden ejecutarse en modo standalone o estar agrupados alrededor de un Agente.

Yuno

Para facilitar la creación y puesta en marcha del árbol jerárquico de objetos que componen un Yuno, los Objetos G tiene diferentes fases o estados, que son independientes de los estados del Automata:

  • created
    • Función invocante: gobj_create()

    • Método clase: mt_create()

  • running
    • True
      • Función invocante: gobj_start()

      • Método de clase: mt_start()

    • False
      • Función invocante: gobj_stop()

      • Método de clase: mt_stop()

  • playing
    • True
      • Función invocante: gobj_play()

      • Método de clase: mt_play()

    • False
      • Función invocante: gobj_pause()

      • Método de clase: mt_pause()

  • destroyed
    • Función invocante: gobj_destroy()

    • Método clase: mt_destroy()

TODO

Atributos

TODO

Metodos de Clase

mt_create()

mt_destroy()

mt_start()

mt_stop()

mt_play()

mt_pause()

TODO

Comandos

TODO

Automata

TODO

Estados

Las Clase G no tienen porqué tener varios estados. Si no lo necesitan pueden tener un único estado.

TODO

Mensajes

TODO

Mensajes de Salida

TODO

Mensajes de Entrada

TODO

Publicacion

TODO

Subscripcion

TODO

Servicio

A veces el servicio ofrecido es sobre los Recursos accesibles por el Yuno y que pone a disposición de los demás.

TODO

Recursos

TODO

Agente

TODO

Nodo de Red

TODO

API de Yuneta

gobj_start_up()

gobj_register_gclass()

gobj_find_gclass()

gobj_create()

gobj_create_service()

gobj_destroy()

gobj_find_unique_gobj()

gobj_find_service()

gobj_find_gobj()

gobj_find_public_event_service()

gobj_list_gobj_tree()

gobj_list_gobj_attr()

gobj_start()

gobj_stop()

gobj_is_running()

gobj_start_tree()

gobj_stop_tree()

gobj_child_by_index()

gobj_child_size()

gobj_load_persistent_attrs()

gobj_save_persistent_attrs()

gobj_remove_persistent_attrs()

gobj_get_writable_attrs()

gobj_update_writable_attrs()

gobj_write_attr()

gobj_read_attr()

gobj_write_user_data()

gobj_kw_set_user_data()

gobj_read_user_data()

gobj_kw_get_user_data()

gobj_has_attr()

gobj_find_child()

gobj_match_childs()

gobj_build_webix_answer()

gobj_command()

gobj_stats()

set_machine_trace()

is_tracing()

set_timeout()

clear_timeout()

gobj_send_event()

gobj_event_in_input_event_list()

gobj_find_subscriptions()

gobj_subscribe_event()

gobj_unsubscribe_event()

gobj_unsubscribe_event2()

gobj_unsubscribe_list()

gobj_publish_event()

gobj_parent()

gobj_full_name()

gobj_short_name()

gobj_gclass_name()

gobj_name()

gobj_in_this_state()

gobj_change_state()

gobj_current_state()

get_input_event_list()

get_output_event_list()