Clase cMailBox
![]() |
Entorno. |
La clase cMailBox, surge a partir de la dos clases recientemente expuestas, la cMessage, y la cMessageBox, con el fin de abarcarlas y hacerlas accesibles a todo el sistema. Así pues la clase cMailBox, se instaura como un sistema de mensajería al servicio del sistema.
Como se verá posteriormente el sistema de mensajería está totalmente integrado en el planificador para conseguir unos alos niveles de rendimiento. Vamos pues a continuación a exponer el desarrollo de la clase.
![]() |
Grafo. |
Vamos a ver cuales son los miembros atributo y los miembros función del Objeto:
cMailBox | |
Privado:
Público: |
Owner BoxArray NumBox HashFactor error |
Privado:
Público: |
SearchHashFactor HashFunction cMailBox AddBox MyBox SendMsg ExistMessageBox RemoveBox ReturnOwner ~cMailBox |
![]() |
Definición de miembros. |
Atributos.
Definiciones previas.
Con anterioridad a la definición de los atributos y miembros de la clase, se ha optado por definir una serie de constantes y estructuras que hacen más asequible la programación. Para ello pues vamos a nombrarlas:
Número máximo de procesos:
MAX_PROCS: Es redefinible en el momento de la compilación, pero no durante la ejecución. MAX_PROCS por defecto tiene un valor de 1024, ya que éste es el número máximo de tareas que admite el sistema, al estar limitadas por la longitud de la GDT. Se tendría que hacer un estudio previo exaustivo, de los lugares específicos de implantación para saber el número máximo de tareas que se pueden ejecutar a la vez, de este modo se podría recompilar de una manera prsonalizada, y hacer un gasto menor de recursos, obteniendo un rendimiento más óptimo del sistema.
Constates de error
Se darán posteriormente indicación de los miembros que utilizan estos mecanismos.
Mecanismos de bloqueo:
Se darán posteriormente indicación de los miembros que utilizan estos mecanismos.
Nombre de la estructura: RegMessageBox
Atributos:
Owner.
Tipo: void.
Cometido: Almacenar lla @ del propietario del buzón.
BoxArray
Tipo: Array [MAX_PROCS] del tipo RegMessageBox;
Cometido: Es el array que contiene los buzones de los procesos y mapa de características.
NumBox
Tipo: unsigned int, Almacena e número de buzones ocupados del sistema.
Cometido: Almacenar el número de buzones ocupados del sistema.
HashFactor
Tipo: unsigned int, Clave de Función Hash.
Cometido: Almacena el número clave hallado para encontrar la @ rápida de los buzones.
error.
Tipo: int, contenido del último error ocurrido.
Cometido: Dar constancia del último error cometido, es posible que haya funciones que no lo hagan, comprobar su valor inmediatamente después de llamar a una función, si se quiere saber su resultado a ciencia cierta.
Funciones.
SearchHashFactor.
p1 SearchHashFactor();
Parámetros:
- p1: unsigned int, devolución del Factor de hash.
Cometido: Encontrar el número primo inferior más cercano, a la constante del sistema MAX_PROCS.
Pseudocódigo:
|
HashFunction
p1 HashFunction(p2);
Parámetros:
- p1: unsigned int, Devuelve el resultado de la función hash
- p2: unsigned int, Cast con la @ de la tarea de destino.
Cometido: Dada la @ de una tarea, mediante una sencilla función hash, haya la posición del buzón de destino dentro del array de buzones.
Pseudocódigo:
|
cMailBox.
cMailBox();
Parámetros: No necesita.
Cometido: Constructor. Inicializa el buzón, dando como propietario él mismo.
Pseudocódigo:
|
cMailBox(p1);
Parámetros:
- p1: void *, @ del propietario.
Cometido: Constructor. Inicializa el objeto asignando como propietario a p1.
Pseudocódigo:
|
AddBox.
p1 AddBox(p2);
Parámetros:
- p1: int, Devuelve un código de error.
- p2: cMessageBox *, @ de buzón para añadir.
Cometido: Añade un buzón ya creado con @ p2 al sistema de buzones propio del sistema, si se incurre en algún error, devolverá uno de los valores descritos con anterioridad dentro de la sección "Constantes de error" de éste mismo capítulo.
Pseudocódigo:
|
MyBox
p1 MyBox(p2);
Parámetros:
- p1: cMessageBox *, devuelve la @ del buzón.
- p2: void *, @dirección del propietario del buzón.
Cometido: Dado un propietario de un buzón devuelve la @ física del buzón. Atención no la posición dentro del array de buzones, si se incurre en algún error, devolverá uno de los valores descritos con anterioridad dentro de la sección "Constantes de error" de éste mismo capítulo.
Pseudocódigo:
|
SendMsg
p1 SendMsg(p2);
Parámetros:
- p1: int, devuelve el error producido.
- p2: cMessage *, mensaje que se quiere mandar.
Cometido: Mandar un mensaje p2, si se incurre en algún error, devolverá uno de los valores descritos con anterioridad dentro de la sección "Constantes de error" de éste mismo capítulo.
Pseudocódigo:
|
ExistMessageBox
p1 ExistMessageBox(p2);
Parámetros:
- p1: int, en él se devuelve el valor del error producido.
- p2: void *, @ del propietario, que se quiere saber si tiene buzón.
Cometido: Dada la @ de un proceso nos indica si tiene creado un buzón, em importante a la hora de mandar un mensaje, si se incurre en algún error, devolverá uno de los valores descritos con anterioridad dentro de la sección "Constantes de error" de éste mismo capítulo.
Pseudocódigo:
|
RemoveBox.
p1 RemoveBox(p2);
Parámetros:
- p1: int, en él se devuelve el valor del error producido.
- p2: void*, @ del propietario, que se quiere borrar su buzón.
Cometido: Borar el buzón de un propietario definido por la @ p2, si se incurre en algún error, devolverá uno de los valores descritos con anterioridad dentro de la sección "Constantes de error" de éste mismo capítulo.
Pseudocódigo:
|
ReturnOwner
p1 ReturnOwner();
Parámetros:
- p1: void *, en él se devuelve la @ del propietario.
Cometido: Devuelve el propietario del buzón expresado en forma de @, si se incurre en algún error, devolverá uno de los valores descritos con anterioridad dentro de la sección "Constantes de error" de éste mismo capítulo.
Pseudocódigo:
|
~cMailBox
~cMailBox();
Parámetros: No necesita.
Cometido: Eliminar la instancia en memoria del objeto cMailBox, además de recorrer el array de registros de buzones, aantes de eliminarlos llama a los destructores de los mensajes que contiene cada uno.
Pseudocódigo:
|
Última actualización de la página: 12/03/99
Esta página está hospedada en Consigue tu Página
Web Gratis