OMNET QUEUE

OMNET QUEUE is a container class that act as a queue.

Member functions in queues in Oment++

  • front() which returns pointer to the object at the front.
  • insert(obj), it inserts an objects into the queue head.
  • back(), returns pointer to the object at the back.
  • pop(), returns and removes object from the front.
  • insertAfter(obj-where, obj_what).
  • remove(obj), it removes that object from the queue.
  • insertBefore(obj_where, obj_what).
  • length(), returns the number of items in the queue.
  • empty(), tells whether there is anything in the queue.

Omnet++ Queue Length functions is mainly used due to number of items in the queue can be obtained.

Sample Omnet++ Queue Examples

This is the code for take and put operations in queue.

#include "Queue.h"
#include "QueueMessage_m.h"
#include <omnetpp.h>

void Queue::initialize() {

}

void Queue::handleMessage(cMessage* msg) {
    QueueMessage* message = check_and_cast<QueueMessage*>(msg);
    if (message->getOperationType() == REQUEST_PUT) {
        queue.insert(message);
    } else if (message->getOperationType() == REQUEST_TAKE) {
        if (!queue.isEmpty()) {
            QueueMessage* reply = check_and_cast<QueueMessage*>(queue.pop());
            send(reply, msg->getSenderGate());
        } else {
            //Wait for queue to not be empty... Somehow...
        }
    }
}