Lista de procesos:
Proceso MPIDispacher: Este proceso se encarga registrar los pedidos de mensajes que provengan del Modelo de Negocio. Para llevar al cabo esto utilizará una cola de mensajes por donde recibe las peticiones de registro por un determinado origen y un tipo de mensajes, en ella misma responde si pudo realizar la operacion o hubo algun problema.
Proceso MPISender: Este es el encargado de enviar los mensajes provenientes de los MPIEndPoints a traves de la API de comunicacion. Para comunicarse con este proceso habra una unica cola en donde cada MPIEndpoint colocara el mensaje a enviar y el proceso MPISender tomara cada uno de los mensajes y los intentará enviar, por la misma cola devolvera el resultado de la operacion.
Proceso MPIReceiver: Este es el proceso encargado de leer los mensajes que llegan a la API de comunicaciones, y en base a la tabla armada por el proceso MPIDispacher repartir los mensajes a las colas que corresponden para que el MPIEndPoint correspondiente lo lea.
Procesos extra:
Cada proceso del modelo de negocios que necesite utilizar el MPI deberá crear una instancia del MPI y luego operar obteniendo nuevos MPIEndPoints para enviar y recibir mensajes.

La estructura que se transmitira sera la siguiente:
typedef struct MPIQueueAdminMessage{
long mtype;
long emisor;
int pedido;
int resultadoOperacion;
int tipoDeMensaje;
char emisor[MAX_NAME];
};
Los mensajes a enviar seran los siguientes:
Pedido de registracion: Se lo envia el MPIEndPoint al MPIDispatcher para que lo registre para recibir ciertos mensajes determinados.
Los datos necesarios son:
Respuesta de registracion: Se lo envia el MPIDispatcher al MPIEndPoint que realizao la peticion. La respuesta puede ser REGISTRATION_SUCCESSFUL en caso de que se pueda realizar la opreacion o REGISTRATION_FAIL en caso de que ya halla otro MPIEndPoint con esos datos registrado.
Los datos necesarios son
Pedido de des registracion: Se lo envia el MPIEndPoint al MPIDispatcher para que elimine la registracion del proceso con ese tipo particular de mensajes.
Los datos necesarios son:
Respuesta de des registracion: Se lo envia el MPIDispatcher al MPIEndPoint que realizao la peticion.
Los datos necesarios son
Agregado de cola: Se lo envia el MPIDispatcher al MPIReceiver para que este abra la cola nueva que se agrega para colocar los mensajes, los datos necesarios son:
Quitado de cola: Se lo envia el MPIDispatcher al MPIReceiver para que este cierre una cola luego de que un MPIEndPoint :
Esta es la cola especializada para cada MPIEndPoint donde se colocaran los mensajes que lleguen desde la API de comunicacion
La estructura que se transmitira sera la siguiente:
typedef struct MPIQueueMessage{
long mtype;
int tipo;
char emisor[MAX_NAME];
char receptor[MAX_NAME];
char mensaje;
};
Estos mensajes serán en un solo sentido, es el MPIReceiver el que los colocara en la cola para que el MPIEndPoint los quite.
Por esta cola viajan los mensajes desde los MPIEndPoint hacia el MPISender el cual los envia utilizando la API de comunicacion.
Los mensajes que viajan desde el MPIEndPoint hacia el MPISender tienen la misma estructura que los anteriores.
El MPISender envia una respuesta al EndPoint con el resultado de la operacion, estos mensajes utilizan la estructura de los mensajes administrativos.
Memoria compartida:
Se utilizara memoria compartida para guardar los datos compartidos entre los procesos:
Cada elemento de la tabla tendra:
Semaforos:
Se utilizara un semaforo para el acceso a la memoria compartida para garantizar la exclusion mutua entre los procesos
Habrá un semaforo que le servira al proceso de modelo de negocios como barrera para saber cuando fue inicializada toda la interfaz.
Un ultimo semaforo que tambien sirve como barrera para el dispatcher, este le permitira continuar cuando el MPISender y el MPIReceiver se hayan inicializado
Seniales
Se utilizaran seniales para indicarle a los procesos MPIDispacher, MPISender y MPIReceiver que deben finalizar sus actividades.
El MPIDispacher le enviara seniales al MPIReceiver para indicarle que hay nuevos mensajes dirigidos para el en la cola administrativa ya que el primer proceso estara bloqueado leyendo los mensajes de la API de comunicacion.