DRCL JavaSim API

drcl.inet.core.queue
Class MQueue

java.lang.Object
  |
  +--drcl.DrclObj
        |
        +--drcl.comp.Component
              |
              +--drcl.comp.queue.ActiveQueue
                    |
                    +--drcl.inet.core.Queue
                          |
                          +--drcl.inet.core.queue.MQueue
All Implemented Interfaces:
java.lang.Cloneable, InetConstants, InetCoreConstants, ObjectDuplicable, PktClassifier, java.io.Serializable

public class MQueue
extends Queue
implements PktClassifier

MQueue is an m-level queue generalized from RIO and 3-Color queue. Specifically, it is a FIFO queue with m queue logics, one for each level. The level-0 queue is the highest level queue while the level-(m-1) queue is the lowest. It uses a PktClassifier to classify the incoming packets into m levels. When a packet arrives, the packet is classified into one of the m level. If the packet can be enqueued in that level (permitted by the corresponding queue logic), the packet is also enqueued to all the queues of lower levels without being rejected. Dequeuing follows FIFO, the dequeued packet is also dequeued from the queues of its (classified) level and all the lower levels. The component exports an error if no level of queue is found for the packet.

See Also:
Serialized Form

Inner classes inherited from class drcl.comp.Component
Component.LockPack
 
Field Summary
static java.lang.String EVENT_QSIZE_PORT_ID
          Name of the port that exports the instant queue size change events.
 
Fields inherited from class drcl.comp.queue.ActiveQueue
nrequests, outport, OUTPUT_PORT_ID
 
Fields inherited from class drcl.comp.Component
FLAG_COMPONENT_NOTIFICATION, FLAG_DEBUG_ENABLED, FLAG_DIRECT_OUTPUT_ENABLED, FLAG_ENABLED, FLAG_ERROR_ENABLED, FLAG_EVENT_ENABLED, FLAG_GARBAGE_DISPLAY_ENABLED, FLAG_GARBAGE_ENABLED, FLAG_PORT_NOTIFICATION, FLAG_STARTED, FLAG_STOPPED, FLAG_TRACE_ENABLED, FLAG_UNDEFINED_START, id, infoPort, lockHead, name, parent, PortGroup_DEFAULT_GROUP, PortGroup_EVENT, PortGroup_SERVICE, Root, Trace_DATA, Trace_SEND
 
Fields inherited from interface drcl.inet.core.InetCoreConstants
CONFIG_PORT_ID, PULL_PORT_ID
 
Fields inherited from interface drcl.inet.InetConstants
BYTE_MODE, DEFAULT_BANDWIDTH, DEFAULT_BUFFER_SIZE, DEFAULT_MTU, EVENT_ID_CHANGED_PORT_ID, EVENT_IDENTITY_ADDED, EVENT_IDENTITY_REMOVED, EVENT_IF_NEIGHBOR_DOWN, EVENT_IF_NEIGHBOR_UP, EVENT_IF_PORT_ID, EVENT_MCAST_HOST_PORT_ID, EVENT_PKT_ARRIVAL, EVENT_PKT_ARRIVAL_PORT_ID, EVENT_RT_ENTRY_ADDED, EVENT_RT_ENTRY_MODIFIED, EVENT_RT_ENTRY_REMOVED, EVENT_RT_MCAST_CHANGED_PORT_ID, EVENT_RT_UCAST_CHANGED_PORT_ID, EVENT_VIF_NEIGHBOR_DOWN, EVENT_VIF_NEIGHBOR_UP, EVENT_VIF_PORT_ID, HOST_ENTRY_EXT, ID_CSL, MCAST_QUERY_PORT_ID, PACKET_MODE, PID_DV, PID_DVMRP, PID_HELLO, PID_IGMP, PID_OSPF, PID_RSVP, PID_TCP, PID_UDP, SERVICE_CONFIGSW_PORT_ID, SERVICE_ID_PORT_ID, SERVICE_IF_PORT_ID, SERVICE_MCAST_PORT_ID, SERVICE_RT_PORT_ID, UCAST_QUERY_PORT_ID
 
Constructor Summary
MQueue()
           
MQueue(java.lang.String id_)
           
 
Method Summary
 int classify(Packet p_)
          Implements PktClassifier.classify(drcl.net.Packet).
 java.lang.Object dequeue()
          Dequeues and returns the first object in the queue.
 void duplicate(java.lang.Object source_)
          Duplicates the content of source_, including ID, name, child components and connections among them, to this component.
 java.lang.Object enqueue(java.lang.Object obj_)
          Enqueues the object at the end of the queue
 java.lang.Object firstElement()
          Retrieves but not dequeue the first object in the queue.
 int getCapacity()
          Returns the capacity of the queue.
 QLogic getQLogic(int level_)
           
 int getSize()
          Returns the current size of the queue.
 java.lang.String info(java.lang.String prefix_)
           
 boolean isDropHeadEnabled()
           
 boolean isEmpty()
          Return true if the queue is empty.
 boolean isFull()
          Return true if the queue is full.
 java.lang.Object lastElement()
          Retrieves but not remove the last object in the queue.
 java.lang.Object peekAt(int pos_)
          Retrieves but not remove the object at the position specified.
 void reset()
          Resets the component for being used anew.
 void setCapacity(int capacity_)
          Sets the capacity of the queue.
 void setDropHeadEnabled(boolean enabled_)
           
 void setQLogic(int level_, QLogic qlogic_)
           
 
Methods inherited from class drcl.inet.core.Queue
createConfigPort, getMode, isByteMode, isPacketMode, setMode
 
Methods inherited from class drcl.comp.queue.ActiveQueue
_getnrequests, _setnrequests, enqueueAt, getAvailableSize, getEnqueCount, increaseEnqueCount, info, process, pull, retrieveAt
 
Methods inherited from class drcl.comp.Component
_resume, _start, _stop, addComponent, addComponent, addEventPort, addEventPort, addForkPort, addPort, addPort, addPort, addPort, addPort, addPort, addPort, addPort, addServerPort, addServerPort, cancelFork, componentAdded, componentRemoved, connect, containsComponent, containsComponent, containsPort, debug, disconnectAll, disconnectAllPeers, disconnectAllPorts, drop, drop, error, error, expose, exposeEventPorts, exposePort, exposePort, exposePort, exposePort, exposePort, findAvailable, findAvailable, findAvailable, finishing, fork, forkAt, getAllComponents, getAllPorts, getAllPorts, getAllWiresInside, getAllWiresInsideOut, getAllWiresOut, getComponent, getComponentFlag, getComponentFlag, getContract, getContractHT, getContractHT, getDebugFlagsInBinary, getDebugLevelNames, getForkManager, getID, getName, getParent, getPort, getPort, getRoot, getRuntime, getTime, iduplicate, isAncestorOf, isComponentNotificationEnabled, isContainer, isDebugEnabled, isDebugEnabledAt, isDirectOutputEnabled, isEnabled, isErrorNoticeEnabled, isEventExportEnabled, isGarbageDisplayEnabled, isGarbageEnabled, isPortNotificationEnabled, isPortRemovable, isStarted, isStopped, isTraceEnabled, lock, notify, notifyAll, operate, portAdded, portRemoved, reboot, removeAll, removeAllComponents, removeAllPorts, removeAllPorts, removeComponent, removeComponent, removePort, removePort, removePort, resume, run, sduplicate, send, sendAt, setComponentFlag, setComponentFlag, setComponentNotificationEnabled, setContract, setDebugEnabled, setDebugEnabled, setDebugEnabledAt, setDebugEnabledAt, setDebugEnabledAt, setDirectOutputEnabled, setDirectOutputEnabled, setEnabled, setErrorNoticeEnabled, setErrorNoticeEnabled, setEventExportEnabled, setEventExportEnabled, setExecutionBoundary, setGarbageDisplayEnabled, setGarbageDisplayEnabled, setGarbageEnabled, setGarbageEnabled, setID, setID, setName, setPort, setPort, setPortNotificationEnabled, setPortRemovable, setRuntime, setTraceEnabled, setTraceEnabled, sleepFor, sleepUntil, stop, toString, unexpose, unlock, useLocalForkManager, useLocalForkManager, wait
 
Methods inherited from class drcl.DrclObj
clone
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

EVENT_QSIZE_PORT_ID

public static final java.lang.String EVENT_QSIZE_PORT_ID
Name of the port that exports the instant queue size change events.
Constructor Detail

MQueue

public MQueue()

MQueue

public MQueue(java.lang.String id_)
Method Detail

reset

public void reset()
Description copied from class: Component
Resets the component for being used anew. All the internal variables must be set to the initial state. All the ports and child components are reset as well.
Overrides:
reset in class Queue

duplicate

public void duplicate(java.lang.Object source_)
Description copied from class: Component
Duplicates the content of source_, including ID, name, child components and connections among them, to this component. Subclasses need to override this method to copy its own variables.
Overrides:
duplicate in class Queue

info

public java.lang.String info(java.lang.String prefix_)
Overrides:
info in class Queue

classify

public int classify(Packet p_)
Implements PktClassifier.classify(drcl.net.Packet). It simply return the first bit of the ToS field of the INET header.
Specified by:
classify in interface PktClassifier

setQLogic

public void setQLogic(int level_,
                      QLogic qlogic_)
Parameters:
level_ - level index of the queue logic.

getQLogic

public QLogic getQLogic(int level_)

enqueue

public java.lang.Object enqueue(java.lang.Object obj_)
Enqueues the object at the end of the queue
Overrides:
enqueue in class ActiveQueue
Returns:
the object being dropped due to the enqueue; null otherwise.

dequeue

public java.lang.Object dequeue()
Dequeues and returns the first object in the queue.
Overrides:
dequeue in class ActiveQueue
Returns:
the object dequeued; null if queue is empty.

peekAt

public java.lang.Object peekAt(int pos_)
Retrieves but not remove the object at the position specified.
Overrides:
peekAt in class ActiveQueue
Returns:
the object; null if position is not valid.

firstElement

public java.lang.Object firstElement()
Retrieves but not dequeue the first object in the queue.
Overrides:
firstElement in class ActiveQueue
Returns:
the object; null if queue is empty.

lastElement

public java.lang.Object lastElement()
Retrieves but not remove the last object in the queue.
Overrides:
lastElement in class ActiveQueue
Returns:
the object; null if queue is empty.

isFull

public boolean isFull()
Return true if the queue is full.
Overrides:
isFull in class ActiveQueue

isEmpty

public boolean isEmpty()
Return true if the queue is empty.
Overrides:
isEmpty in class ActiveQueue

setCapacity

public void setCapacity(int capacity_)
Sets the capacity of the queue.
Overrides:
setCapacity in class Queue
Following copied from class: drcl.inet.core.Queue
Parameters:
capacity_ - the new capacity.

getCapacity

public int getCapacity()
Returns the capacity of the queue.
Overrides:
getCapacity in class Queue

getSize

public int getSize()
Returns the current size of the queue.
Overrides:
getSize in class Queue

setDropHeadEnabled

public void setDropHeadEnabled(boolean enabled_)

isDropHeadEnabled

public boolean isDropHeadEnabled()

DRCL JavaSim API

Copyright © 2001 - DRCL, OSU     ~ Back to JavaSim Home ~