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:
GObj-Ecosistema: librería base.
Yuneta: Framework de desarrollo, para lenguajes C y Javascript.
Yuno Store: Almacén de yunos.
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):
Accesible desde el exterior mediante Mensajes; ciertos componentes formas parte del Interface.
- El autómata contiene:
Lista de Mensajes de Entrada, forma parte del Interface.
Lista de Mensajes de Salida, forma parte del Interface.
Lista de Estados. Uso interno.
Lista de Mensajes permitidos en cada Estado. Uso interno
Los Mensajes de Salida pueden ser recibidos mediante Subscripcion en el momento de su Publicacion.
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()