int CommunicationModule::process_message(Connection *c, Message *m) /* process request */ { DEBUG("processing message %s\n", m->data); switch (m->header->opcode) { case DATA_MESSAGE : DEBUG("process data message\n"); process_data_message(c, m); break; case REQUEST_MESSAGE : DEBUG("process request message\n"); process_request_message(c, m); break; case CONTROL_MESSAGE : DEBUG("process control message\n"); process_control_message(c, m); break; default : DEBUG("Default message - opcode unknown - reject\n"); return FAILURE; break; } /* write(c->sockId, m->data, m->header->msgLength); delete m; */ /* having processed this message delete it */ return SUCCESS; } int CommunicationModule::process_data_message(Connection *c, Message *m) { /* process the data message received from the client */ Connection *destination; DEBUG("processing data message ...\n"); /* check the queue of pending requests */ /* if no requests are pending for the message of this type, then, add the item to the data message list */ dml -> add_item(m->header->msgType, m->header->uniqueId, m->data); /* add the data item */ /* else */ /* do_route(destination, message ) */ return SUCCESS; } int CommunicationModule::process_request_message(Connection *c, Message *m) { /* process request for a message of a particular type */ MessageItem *dataItem; dataItem = new MessageItem(); /* create a new data item */ DEBUG("processing request message ...\n"); /* get the item from the data message queue and check if its there */ dataItem = dml -> delete_item(m->header->msgType); if(dataItem == (MessageItem *) NULL) { /* if there is no such item - the requestor has to wait */ /* add the item to the request waiting list */ } else { r->do_route (c, message) return SUCCESS; } int CommunicationModule::process_control_message(Connection *c, Message *m) { /* process control messages */ DEBUG("processing control message ...\n"); return SUCCESS; }