ccommbuffer.h Source File¶

API: ccommbuffer.h Source File
API
ccommbuffer.h
1//=========================================================================
2// CCOMMBUFFER.H - part of
3// OMNeT++/OMNEST
4// Discrete System Simulation in C++
5//
6//=========================================================================
7
8/*--------------------------------------------------------------*
9 Copyright (C) 2003-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_CCOMMBUFFER_H
17#define __OMNETPP_CCOMMBUFFER_H
18
19#include <cstdint>
20#include "cobject.h"
21#include "simtime.h"
22
23namespace omnetpp {
24
25class opp_string;
26
27
41class SIM_API cCommBuffer : public cObject
42{
43 public:
44 enum Mode {
45 PARSIMPACK,
46 FINGERPRINT_LEGACY, // "d" ingredient
47 FINGERPRINT // "b", "g" ingredients (new in omnetpp-6.3)
48 };
49
50 protected:
51 Mode mode = PARSIMPACK;
52
53 public:
57 virtual ~cCommBuffer() {}
58
61
65 virtual Mode getMode() const { return mode; }
66
70 virtual void setMode(Mode m) { mode = m; }
72
75
80 virtual bool isBufferEmpty() const = 0;
81
87 virtual void assertBufferEmpty() = 0;
89
92
95 virtual void pack(char d) = 0;
99 virtual void pack(unsigned char d) = 0;
103 virtual void pack(bool d) = 0;
107 virtual void pack(short d) = 0;
111 virtual void pack(unsigned short d) = 0;
115 virtual void pack(int d) = 0;
119 virtual void pack(unsigned int d) = 0;
123 virtual void pack(long d) = 0;
127 virtual void pack(unsigned long d) = 0;
131 virtual void pack(long long d) = 0;
135 virtual void pack(unsigned long long d) = 0;
139 virtual void pack(float d) = 0;
143 virtual void pack(double d) = 0;
147 virtual void pack(long double d) = 0;
151 virtual void pack(const char *d) = 0;
155 virtual void pack(const opp_string& d) = 0;
159 virtual void pack(SimTime d) = 0;
161
164
167 virtual void pack(const char *d, int size) = 0;
171 virtual void pack(const unsigned char *d, int size) = 0;
175 virtual void pack(const bool *d, int size) = 0;
179 virtual void pack(const short *d, int size) = 0;
183 virtual void pack(const unsigned short *d, int size) = 0;
187 virtual void pack(const int *d, int size) = 0;
191 virtual void pack(const unsigned int *d, int size) = 0;
195 virtual void pack(const long *d, int size) = 0;
199 virtual void pack(const unsigned long *d, int size) = 0;
203 virtual void pack(const long long *d, int size) = 0;
207 virtual void pack(const unsigned long long *d, int size) = 0;
211 virtual void pack(const float *d, int size) = 0;
215 virtual void pack(const double *d, int size) = 0;
219 virtual void pack(const long double *d, int size) = 0;
223 void pack(char **d, int size) {pack((const char **)d,size);}
227 virtual void pack(const char **d, int size) = 0;
231 virtual void pack(const opp_string *d, int size) = 0;
235 virtual void pack(const SimTime *d, int size) = 0;
237
240
243 virtual void unpack(char& d) = 0;
247 virtual void unpack(unsigned char& d) = 0;
251 virtual void unpack(bool& d) = 0;
255 virtual void unpack(short& d) = 0;
259 virtual void unpack(unsigned short& d) = 0;
263 virtual void unpack(int& d) = 0;
267 virtual void unpack(unsigned int& d) = 0;
271 virtual void unpack(long& d) = 0;
275 virtual void unpack(unsigned long& d) = 0;
279 virtual void unpack(long long& d) = 0;
283 virtual void unpack(unsigned long long& d) = 0;
287 virtual void unpack(float& d) = 0;
291 virtual void unpack(double& d) = 0;
295 virtual void unpack(long double& d) = 0;
299 void unpack(char *&d) {unpack((const char *&)d);}
303 virtual void unpack(const char *&d) = 0;
307 virtual void unpack(opp_string& d) = 0;
311 virtual void unpack(SimTime& d) = 0;
313
316
319 virtual void unpack(char *d, int size) = 0;
323 virtual void unpack(unsigned char *d, int size) = 0;
327 virtual void unpack(bool *d, int size) = 0;
331 virtual void unpack(short *d, int size) = 0;
335 virtual void unpack(unsigned short *d, int size) = 0;
339 virtual void unpack(int *d, int size) = 0;
343 virtual void unpack(unsigned int *d, int size) = 0;
347 virtual void unpack(long *d, int size) = 0;
351 virtual void unpack(unsigned long *d, int size) = 0;
355 virtual void unpack(long long *d, int size) = 0;
359 virtual void unpack(unsigned long long *d, int size) = 0;
363 virtual void unpack(float *d, int size) = 0;
367 virtual void unpack(double *d, int size) = 0;
371 virtual void unpack(long double *d, int size) = 0;
375 void unpack(char **d, int size) {unpack((const char **)d,size);}
379 virtual void unpack(const char **d, int size) = 0;
383 virtual void unpack(opp_string *d, int size) = 0;
387 virtual void unpack(SimTime *d, int size) = 0;
389
392
395 bool packFlag(bool flag) {pack(flag); return flag;}
396
400 bool checkFlag() {bool flag; unpack(flag); return flag;}
401
405 virtual void packObject(cObject *obj);
406
412};
413
414} // namespace omnetpp
415
416#endif
417
int64_t-based, base-10 fixed-point simulation time.
Definition simtime.h:67
Buffer for the communications layer of parallel simulation.
Definition ccommbuffer.h:42
virtual void unpack(short *d, int size)=0
virtual void pack(int d)=0
virtual void unpack(bool *d, int size)=0
virtual void pack(const unsigned char *d, int size)=0
virtual void pack(const char *d)=0
virtual void pack(unsigned char d)=0
virtual void pack(char d)=0
virtual void pack(float d)=0
virtual void unpack(unsigned long long &d)=0
virtual void unpack(unsigned int *d, int size)=0
virtual void pack(long long d)=0
virtual void pack(const opp_string *d, int size)=0
virtual void pack(unsigned short d)=0
void pack(char **d, int size)
Definition ccommbuffer.h:223
virtual cObject * unpackObject()
bool checkFlag()
Definition ccommbuffer.h:400
virtual void pack(const unsigned short *d, int size)=0
virtual void pack(unsigned long d)=0
virtual void pack(const unsigned long *d, int size)=0
virtual ~cCommBuffer()
Definition ccommbuffer.h:57
virtual void pack(const bool *d, int size)=0
virtual void unpack(int &d)=0
virtual void unpack(long &d)=0
virtual void pack(const short *d, int size)=0
virtual void unpack(bool &d)=0
virtual void unpack(char *d, int size)=0
void unpack(char **d, int size)
Definition ccommbuffer.h:375
virtual void setMode(Mode m)
Definition ccommbuffer.h:70
virtual void pack(const long long *d, int size)=0
virtual bool isBufferEmpty() const =0
virtual void unpack(unsigned char *d, int size)=0
bool packFlag(bool flag)
Definition ccommbuffer.h:395
virtual void pack(const unsigned long long *d, int size)=0
virtual void pack(const char **d, int size)=0
virtual void unpack(float &d)=0
virtual void pack(const double *d, int size)=0
virtual void unpack(SimTime &d)=0
virtual void packObject(cObject *obj)
virtual void pack(SimTime d)=0
virtual void pack(const unsigned int *d, int size)=0
virtual void pack(double d)=0
virtual void pack(unsigned long long d)=0
virtual void pack(const float *d, int size)=0
virtual void pack(const int *d, int size)=0
virtual void pack(const opp_string &d)=0
virtual void unpack(char &d)=0
virtual void unpack(int *d, int size)=0
virtual Mode getMode() const
Definition ccommbuffer.h:65
virtual void unpack(SimTime *d, int size)=0
virtual void unpack(long long *d, int size)=0
virtual void unpack(long long &d)=0
virtual void unpack(opp_string &d)=0
virtual void pack(short d)=0
virtual void unpack(short &d)=0
virtual void unpack(double *d, int size)=0
virtual void pack(bool d)=0
virtual void unpack(unsigned short &d)=0
void unpack(char *&d)
Definition ccommbuffer.h:299
virtual void pack(const SimTime *d, int size)=0
virtual void unpack(unsigned long long *d, int size)=0
virtual void unpack(unsigned long &d)=0
virtual void pack(long d)=0
virtual void unpack(unsigned short *d, int size)=0
virtual void unpack(unsigned char &d)=0
virtual void unpack(long double *d, int size)=0
virtual void unpack(const char *&d)=0
virtual void pack(long double d)=0
virtual void assertBufferEmpty()=0
virtual void unpack(unsigned long *d, int size)=0
virtual void pack(const long double *d, int size)=0
virtual void unpack(opp_string *d, int size)=0
virtual void pack(const char *d, int size)=0
virtual void pack(unsigned int d)=0
virtual void unpack(unsigned int &d)=0
virtual void unpack(float *d, int size)=0
virtual void unpack(double &d)=0
virtual void unpack(const char **d, int size)=0
virtual void unpack(long *d, int size)=0
virtual void unpack(long double &d)=0
virtual void pack(const long *d, int size)=0
cObject()
Definition cobject.h:124
Lightweight string class, used internally in some parts of OMNeT++.
Definition opp_string.h:40