Clase cMessageBox.
![]() |
Entorno. |
cMesageBox es una clase que atiende a la necesidad de guardar en un destino, una serie de mensajes para ser tratados composterioridad, tal y como se desee por parte del destinatario.
Así pues esta clase hace las funciones de buzón de mensajes, de la clase cMessage. En el diseño se especifica que cada tarea enga un buzón, y este está diseñado para eso, tras lo cual se verá la relacción entre buzones y tareas.
De ésta manera queda pues definido, un método de almacenamiento temporal de mensajes, en tiempo de ejecución.
![]() |
Grafo. |
Vamos a ver cuales son los miembros atributo y los miembros función del Objeto:
cMessageBox | |
Privado:
Público: |
Owner BoxFlags ListMsg ReadMsg WriteMsg NumMsg error |
Público: | cMessageBox AddMsg ReturnMsg ReturnOwner WaitForMessage ReturnStatus ~cMessageBox |
![]() |
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:
Constantes de error:
Las funciones suelen devolver estos valores, pero en el caso de devolver un valor de tipo puntero, cuando se incurra en error, devolverán NULL, y en el atributo público error, la causa de éste.
Mecanismos de bloqueo:
Para pequeños bloqueos de buzones, por lo general en caso de creación o borrado, se crean unas constantes que, indicarán el estado de dicho buzón:
Se darán posteriormente indicación de los miembros que utilizan estos mecanismos.
Máscaras de acceso a flags:
Se darán posteriormente indicación de los miembros que utilizan estos mecanismos.
Lectura de mensajes:
Se darán posteriormente indicación de los miembros que utilizan estos mecanismos.
Estructura nodo de mensaje:
El nodo de mensaje es, la unidad mínima dentro de una lista doblemente enlazada, con sentido dentro de ella. En él se van a agrupar los siguientes atributo:
Nombre de la estructura: tMessageNode
Atributos:
Se darán posteriormente indicación de los miembros que utilizan estos mecanismos.
Owner
Tipo: void *, @ del propietario.
Cometido: Identificar el propietario del buzón.
BoxFlags
Tipo: tMessageBox (unsigned int), flags del buzón.
Cometido: Hacer echo del estado del buzón.
Valores asignados a los bits del tipo tMsgFlasgs
- bit 0 W: Hay mensajes esperando (W(ait)=1)
- bit 1 N: Hay mensajes nuevos (N(ew)=1)
- bit 2 R: Hay desbordamiento de mensajes (O(vermsg)=1)
- bits 3-31: Reservado para futuras implementaciones.
ListMsg
Tipo: MessageNode *, puntero al inicio de la lista de mensajes.
Cometido: Comienzo de la lectura de los mensajes, borrado...
ReadMsg
Tipo: MessageNode *, puntero a la cabeza de lectura de la lista.
Cometido: A partir de ella se leen mensajes.
WriteMsg
Tipo: MessageNode *, puntero a la cabeza de escritura de la lista.
Cometido: A partir de ella se escriben mensajes.
NumMsg
Tipo: unsigned int, número de mensajes.
Cometido: Almacena el número de mensajes dentro de la lista.
error
Tipo: int, errores acaecidos.
Cometido: En el se especifican los errores, producidos durante la ejecución de algún miembro. Sólo se actualiza tras alguna llamada a miembro, con lo que leerla fuera de contexto, puede conllevar a conclusiones erróneas.
Miembros.
cMessageBox();
cMessageBox();
Parámetros: No necesita.
Cometido: Constructor. Inicializa los valores básicos de la clase y como propietario se asigna así mismo.
Pseudocódigo:
|
cMessageBox(p1);
Parámetros:
- p1: void *, especifica el propietario.
Cometido: Constructor. Inicializa la estructura básica del objeto, pero con propietario p1.
Pseudocódigo:
|
AddMsg
AddMsg(p1);
Parámetros:
- p1: cMessage &, instancia de cMessage que se quiere copiar.
Cometido: Añadir dentro de un buzón un mensaje.
Pseudocódigo:
|
ReturnMsg
p1 ReturnMsg(p2);
Parámetros:
- p1: cMessage*, puntero al mensaje que se quiere leer.
- p2: int=_REMOVE, indica si el mensaje será o no eliminado del buzón (vid. apartado "Lectura de mensajes" de la sección 2.3.1.1).
Cometido: Devolver un mensaje de los almacenados en un buzón a su propietario.
Pseudocódigo:
|
ReturnOwner
p1 ReturnOwner();
Parámetros:
- p1: void *, propietario del buzón.
Cometido: Devolver el propietario de buzón;
Pseudocódigo:
|
WaitForMessage
WaitForMessage ();
Parámetros: No necesita.
Cometido: Provoca cambios a la siguiente tarea del planificador, mientras no tenga mensajes en el buzón.
Pseudocódigo:
|
ReturnStatus
p1 ReturnStatus();
Parámetros:
- p1: fFlagMsgBox, en él se devuelven los flags de estado del buzón.
Cometido: Devolver el estado del buzón al que se le consulta.
Pseudocódigo:
|
~cMessageBox
~cMessageBox();
Parámetros: No necesita.
Cometido: Eliminar la instancia del objeto de la memoria, eliminando así mismo a todos los mensajes que contiene.
Pseudocódigo:
|
Última actualización de la página: 12/03/99
Esta página está hospedada en Consigue tu Página
Web Gratis