cpacketqueue.h Source File

API: cpacketqueue.h Source File
API
cpacketqueue.h
1//==========================================================================
2// CPACKETQUEUE.H - part of
3// OMNeT++/OMNEST
4// Discrete System Simulation in C++
5//
6//==========================================================================
7
8/*--------------------------------------------------------------*
9 Copyright (C) 1992-2017 Andras Varga
10 Copyright (C) 2006-2017 OpenSim Ltd.
11
12 This file is distributed WITHOUT ANY WARRANTY. See the file
13 `license' for details on this and other legal matters.
14*--------------------------------------------------------------*/
15
16#ifndef __OMNETPP_CPACKETQUEUE_H
17#define __OMNETPP_CPACKETQUEUE_H
18
19#include "cqueue.h"
20#include "cpacket.h"
21
22namespace omnetpp {
23
24
33class SIM_API cPacketQueue : public cQueue
34{
35 private:
36 int64_t bitLength=0;
37
38 private:
39 void copy(const cPacketQueue& other);
40 virtual void insert(cObject *obj) override;
41 virtual void insertBefore(cObject *where, cObject *obj) override;
42 virtual void insertAfter(cObject *where, cObject *obj) override;
43 virtual cObject *remove(cObject *obj) override;
44
45 protected:
46 // internal
47 void addLength(cPacket *pkt);
48 cPacket *checkPacket(cObject *obj);
49
50 public:
53
57 cPacketQueue(const char *name=nullptr, Comparator *cmp=nullptr) : cQueue(name, cmp) {}
58
62 cPacketQueue(const char *name, CompareFunc cmp) : cQueue(name, cmp) {}
63
70
79
82
88 virtual cPacketQueue *dup() const override {return new cPacketQueue(*this);}
89
94 virtual std::string str() const override;
95
101 virtual void parsimPack(cCommBuffer *buffer) const override;
102
108 virtual void parsimUnpack(cCommBuffer *buffer) override;
110
113
118 virtual void insert(cPacket *pkt);
119
125 virtual void insertBefore(cPacket *where, cPacket *pkt);
126
133 virtual void insertAfter(cPacket *where, cPacket *pkt);
134
140 virtual cPacket *remove(cPacket *pkt);
141
146 virtual cPacket *pop() override;
147
152 virtual void clear() override;
154
157
161 int64_t getBitLength() const {return bitLength;}
162
167 int64_t getByteLength() const {return (bitLength+7)>>3;}
168
174 virtual cPacket *front() const override {return (cPacket *)cQueue::front();}
175
181 virtual cPacket *back() const override {return (cPacket *)cQueue::back();}
182
188 virtual cPacket *get(int i) const override {return (cPacket *)cQueue::get(i);}
190};
191
192} // namespace omnetpp
193
194
195#endif
196
Buffer for the communications layer of parallel simulation.
Definition ccommbuffer.h:42
cObject is a lightweight class which serves as the root of the OMNeT++ class hierarchy....
Definition cobject.h:93
cPacketQueue & operator=(const cPacketQueue &queue)
cPacketQueue(const char *name=nullptr, Comparator *cmp=nullptr)
Definition cpacketqueue.h:57
virtual cPacketQueue * dup() const override
Definition cpacketqueue.h:88
int64_t getBitLength() const
Definition cpacketqueue.h:161
virtual void parsimPack(cCommBuffer *buffer) const override
virtual void insertBefore(cPacket *where, cPacket *pkt)
virtual void parsimUnpack(cCommBuffer *buffer) override
cPacketQueue(const cPacketQueue &queue)
virtual void clear() override
virtual cPacket * get(int i) const override
Definition cpacketqueue.h:188
int64_t getByteLength() const
Definition cpacketqueue.h:167
virtual std::string str() const override
virtual void insertAfter(cPacket *where, cPacket *pkt)
virtual cPacket * front() const override
Definition cpacketqueue.h:174
virtual cPacket * back() const override
Definition cpacketqueue.h:181
virtual cPacket * remove(cPacket *pkt)
cPacketQueue(const char *name, CompareFunc cmp)
Definition cpacketqueue.h:62
virtual void insert(cPacket *pkt)
virtual cPacket * pop() override
A subclass of cMessage to represent packets, frames, datagrams, application messages,...
Definition cpacket.h:53
Base class for object comparators, used by cQueue for priority queuing.
Definition cqueue.h:58
virtual cObject * back() const
cQueue(const char *name=nullptr, Comparator *cmp=nullptr)
virtual cObject * get(int i) const
virtual cObject * front() const
int(* CompareFunc)(cObject *a, cObject *b)
Function for comparing two cObjects, used by cQueue for priority queuing.
Definition cqueue.h:76