Managers/Events
Esta librería es un recurso pseudoexterno el cual permite crear un objeto de gestión de eventos, pero a requerir de la implementación del objeto AnP original con su primer argumento, se considera que es pseudoexterno pues no pertenece propiamente al objeto AnP pero sí es implementado y fundamental en éste y pertenece, no sólo por filosofía, al propio proyecto AnP.
El sistema se basa en un Array que almacena los Callbacks ordenadamente, cuya posición es su ID. Para evitar un uso excesivo de memoria con este objeto, éste se encarga de ir cubriendo y vaciando el Array de almacenamiento en base a:
- Al crubrir, busca un espacio vacío donde almacenar el nuevo Callback. Si éste no lo encuentra lo añadirá al final como un nuevo elemento del Array.
- Al eliminar lo único que hace es cambiar el valor, eliminando la función del Callback en la posición asignada (su ID) y lo cambia por un valor null.
De esta forma se reutilizan los espacios y la asignación de memoria, pese a no ser la más eficiente, es la más óptima en relación recursos de proceso y memoria.
El último análisis, en el último párrafo, se da en las circunstancias en las que fue usada la librería, pero esto a futuro puede cambiar según se vaya planteando, por ejemplo, teniendo un espacio de memoria en un Array que determine la posición en base a un Array de dos claves.
Es muy importante destacar que este objeto no es un objeto normal de AnP, por lo que no tiene funciones ni gestión de inicio y fin, y es con fines de proceso síncrono. Para asincronizarlo tendríamos que hacer uso de recursos externos como Intervalos, hilos o eventos asíncronos y sólo sería gestionable para su método execute.
EventsManager.execute
Este método objeto público permite ejecutar todos los Callbacks registrados en la variable interna events de una sóla llamada con los argumentos unificados.
Este método no tiene una forma iniciar de detención por lo que una vez se ejecuta se requiere de la espera de que termine la ejecución completa de todos los Callbacks.
Si un Callback da una excepción, éste saltará como no controlado y detendrá el proceso en ese punto específico, donde si es el hilo principal detendrá por completo la aplicación.