RINASim  October 2016
Documentation of framework for OMNeT++
AEBase.cc
Go to the documentation of this file.
1 // The MIT License (MIT)
2 //
3 // Copyright (c) 2014-2016 Brno University of Technology, PRISTINE project
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to deal
7 // in the Software without restriction, including without limitation the rights
8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 // copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
11 //
12 // The above copyright notice and this permission notice shall be included in
13 // all copies or substantial portions of the Software.
14 //
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 // THE SOFTWARE.
22 
23 #include "AEBase.h"
24 
26 
27 const char* PAR_AVGBW = "averageBandwidth";
28 const char* PAR_AVGSDUBW = "averageSDUBandwidth";
29 const char* PAR_PEAKBWDUR = "peakBandwidthDuration";
30 const char* PAR_PEAKSDUBWDUR = "peakSDUBandwidthDuration";
31 const char* PAR_BURSTPERIOD = "burstPeriod";
32 const char* PAR_BURSTDURATION = "burstDuration";
33 const char* PAR_UNDETECTBITERR = "undetectedBitErr";
34 const char* PAR_PDUDROPPROBAB = "pduDroppingProbability";
35 const char* PAR_MAXSDUSIZE = "maxSDUsize";
36 const char* PAR_PARTIALDELIVER = "partialDelivery";
37 const char* PAR_INCOMPLETEDELIVER = "incompleteDelivery";
38 const char* PAR_FORCEORDER = "forceOrder";
39 const char* PAR_MAXALLOWGAP = "maxAllowGap";
40 const char* PAR_DELAY = "delay";
41 const char* PAR_JITTER = "jitter";
42 const char* PAR_COSTTIME = "costTime";
43 const char* PAR_COSTBITS = "costBits";
44 const char* PAR_ATIME = "aTime";
45 const char* PAR_RESILIENCYFACTOR = "resiliencyFactor";
46 
47 const APNamingInfo& AEBase::getApni() const {
48  return apni;
49 }
50 
51 void AEBase::setApni(const APNamingInfo& apni) {
52  this->apni = apni;
53 }
54 
55 const int AEBase::getAuthType(){
56  return authType;
57 }
58 
59 const std::string& AEBase::getAuthName() const {
60  return authName;
61 }
62 
63 const std::string& AEBase::getAuthPassword() const {
64  return authPassword;
65 }
66 
67 const std::string& AEBase::getAuthOther() const {
68  return authOther;
69 }
70 
71 const std::string& AEBase::getSrcAeInstance() const {
72  return srcAeInstance;
73 }
74 
75 void AEBase::setSrcAeInstance(const std::string& srcAeInstance) {
76  this->srcAeInstance = srcAeInstance;
77 }
78 
79 const std::string& AEBase::getSrcAeName() const {
80  return srcAeName;
81 }
82 
83 void AEBase::setSrcAeName(const std::string& srcAeName) {
84  this->srcAeName = srcAeName;
85 }
86 
87 const std::string& AEBase::getSrcApInstance() const {
88  return srcApInstance;
89 }
90 
91 void AEBase::setSrcApInstance(const std::string& srcApInstance) {
92  this->srcApInstance = srcApInstance;
93 }
94 
95 const std::string& AEBase::getSrcApName() const {
96  return srcApName;
97 }
98 
99 void AEBase::setSrcApName(const std::string& srcApName) {
100  this->srcApName = srcApName;
101 }
102 
104  this->connectionState = conState;
105 }
106 
108  return this->connectionState;
109 }
110 
112  //Source info
113  srcApName = this->getModuleByPath("^.^.^")->par(PAR_APNAME).stdstringValue();
114  srcApInstance = this->getModuleByPath("^.^.^")->par(PAR_APINSTANCE).stdstringValue();
115  srcAeName = this->par(PAR_AENAME).stdstringValue();
116  srcAeInstance = this->par(PAR_AEINSTANCE).stdstringValue();
117 
118  apni = APNamingInfo(APN(this->srcApName), this->srcApInstance,
119  this->srcAeName, this->srcAeInstance);
120 }
121 
123 {
124  initNamingInfo();
126 }
127 
129  return QoSRequirements;
130 }
131 
132 void AEBase::setQoSRequirements(const QoSReq& qoSRequirements) {
133  QoSRequirements = qoSRequirements;
134 }
135 
137  //Check whether module has all QoS parameters
138  if (! (hasPar(PAR_AVGBW) &&
139  hasPar(PAR_AVGSDUBW) &&
140  hasPar(PAR_PEAKBWDUR) &&
141  hasPar(PAR_PEAKSDUBWDUR) &&
142  hasPar(PAR_BURSTPERIOD) &&
143  hasPar(PAR_BURSTDURATION) &&
144  hasPar(PAR_UNDETECTBITERR) &&
145  hasPar(PAR_PDUDROPPROBAB) &&
146  hasPar(PAR_MAXSDUSIZE) &&
147  hasPar(PAR_PARTIALDELIVER) &&
148  hasPar(PAR_INCOMPLETEDELIVER) &&
149  hasPar(PAR_FORCEORDER) &&
150  hasPar(PAR_MAXALLOWGAP) &&
151  hasPar(PAR_DELAY) &&
152  hasPar(PAR_JITTER) &&
153  hasPar(PAR_COSTTIME) &&
154  hasPar(PAR_COSTBITS)
155  //&& hasPar(PAR_ATIME)
156  )
157  ) {
158  std::ostringstream ss;
159  ss << "Module " << this->getFullName() << " is not derived from AEBase. It misses some important QoS parameters!";
160  error(ss.str().c_str());
161  }
162 
163  //Create QoS req according to parameters
165  par(PAR_UNDETECTBITERR).doubleValue(),par(PAR_PDUDROPPROBAB).doubleValue(),
166  par(PAR_MAXSDUSIZE),
167  par(PAR_PARTIALDELIVER).boolValue(),par(PAR_INCOMPLETEDELIVER).boolValue(),par(PAR_FORCEORDER).boolValue(),
168  par(PAR_MAXALLOWGAP),par(PAR_DELAY),par(PAR_JITTER),
169  par(PAR_COSTTIME),par(PAR_COSTBITS)
170  );
171  this->setQoSRequirements(req);
172  //EV << "QQQQQQ\n" << cube << "\n\nXXXX\n" << this->getQoSRequirements();
173 
174 }
175 
176 void AEBase::handleMessage(cMessage *msg)
177 {
178 
179 }
180 
182  return FlowObject;
183 }
184 
185 void AEBase::setFlowObject(Flow* flowObject) {
186  FlowObject = flowObject;
187 }
188 
189 bool AEBase::hasFlow(const Flow* flow) {
190  return FlowObject ? *FlowObject == *flow : false;
191 }
192 
193 
194 const unsigned long AEBase::getCdapConId() {
195  return this->cdapConId;
196 }
197 void AEBase::setCdapConId(unsigned long cdapConId) {
198  this->cdapConId = cdapConId;
199 }
200 
201 
203  return this->startInvokeId;
204 }
205 
206 void AEBase::setStartInvokeId(int invokeId) {
207  this->startInvokeId = invokeId;
208 }
const char * PAR_APINSTANCE
Class representing flow object with attributes from specs.
Definition: Flow.h:45
void setSrcAeInstance(const std::string &srcAeInstance)
Definition: AEBase.cc:75
const char * PAR_ATIME
Definition: AEBase.cc:44
const char * PAR_PDUDROPPROBAB
Definition: AEBase.cc:34
bool hasFlow(const Flow *flow)
Definition: AEBase.cc:189
Flow * FlowObject
Definition: AEBase.h:90
const char * PAR_AVGBW
Definition: AEBase.cc:27
const char * PAR_DELAY
Definition: AEBase.cc:40
const std::string & getSrcApName() const
Definition: AEBase.cc:95
CDAPConnectionState connectionState
Definition: AEBase.h:106
Application Process Name class.
Definition: APN.h:36
const char * PAR_BURSTDURATION
Definition: AEBase.cc:32
const APNamingInfo & getApni() const
Definition: AEBase.cc:47
const char * PAR_PEAKSDUBWDUR
Definition: AEBase.cc:30
const char * PAR_COSTTIME
Definition: AEBase.cc:42
Define_Module(AEBase)
const char * PAR_FORCEORDER
Definition: AEBase.cc:38
int startInvokeId
Definition: AEBase.h:87
APNamingInfo apni
Definition: AEBase.h:91
std::string srcAeInstance
Definition: AEBase.h:96
const char * PAR_COSTBITS
Definition: AEBase.cc:43
const char * PAR_APNAME
Flow * getFlowObject() const
Definition: AEBase.cc:181
void initNamingInfo()
Definition: AEBase.cc:111
const unsigned long getCdapConId()
Definition: AEBase.cc:194
std::string authName
Definition: AEBase.h:99
const int getAuthType()
Definition: AEBase.cc:55
QoSReq QoSRequirements
Definition: AEBase.h:104
const std::string & getSrcAeName() const
Definition: AEBase.cc:79
const std::string & getAuthName() const
Definition: AEBase.cc:59
const std::string & getSrcAeInstance() const
Definition: AEBase.cc:71
std::string srcAeName
Definition: AEBase.h:95
APNamingInfo holds complete naming info for particular application process.
Definition: APNamingInfo.h:43
const char * PAR_BURSTPERIOD
Definition: AEBase.cc:31
void initQoSRequiremets()
Definition: AEBase.cc:136
const char * PAR_AVGSDUBW
Definition: AEBase.cc:28
void setSrcApName(const std::string &srcApName)
Definition: AEBase.cc:99
void setSrcApInstance(const std::string &srcApInstance)
Definition: AEBase.cc:91
const char * PAR_UNDETECTBITERR
Definition: AEBase.cc:33
unsigned long cdapConId
Definition: AEBase.h:88
std::string authOther
Definition: AEBase.h:101
std::string authPassword
Definition: AEBase.h:100
void setStartInvokeId(int invokeId)
Definition: AEBase.cc:206
const char * PAR_MAXALLOWGAP
Definition: AEBase.cc:39
const char * PAR_AENAME
const char * PAR_PEAKBWDUR
Definition: AEBase.cc:29
virtual void handleMessage(cMessage *msg)
Definition: AEBase.cc:176
const char * PAR_INCOMPLETEDELIVER
Definition: AEBase.cc:37
const char * PAR_MAXSDUSIZE
Definition: AEBase.cc:35
const char * PAR_JITTER
Definition: AEBase.cc:41
const char * PAR_PARTIALDELIVER
Definition: AEBase.cc:36
void setFlowObject(Flow *flowObject)
Definition: AEBase.cc:185
const std::string & getAuthOther() const
Definition: AEBase.cc:67
CDAPConnectionState getConStatus()
Definition: AEBase.cc:107
const char * PAR_AEINSTANCE
const QoSReq & getQoSRequirements() const
Definition: AEBase.cc:128
int authType
Definition: AEBase.h:98
const char * PAR_RESILIENCYFACTOR
Definition: AEBase.cc:45
Definition: AEBase.h:62
Class representing QoSReq with all its properties that is primarily used by FA, RMT and RA Specificat...
Definition: QoSReq.h:44
const std::string & getSrcApInstance() const
Definition: AEBase.cc:87
virtual void initialize()
Definition: AEBase.cc:122
std::string srcApInstance
Definition: AEBase.h:94
void setApni(const APNamingInfo &apni)
Definition: AEBase.cc:51
void setQoSRequirements(const QoSReq &qoSRequirements)
Definition: AEBase.cc:132
void changeConStatus(CDAPConnectionState conState)
Definition: AEBase.cc:103
CDAPConnectionState
Definition: AEBase.h:58
void setSrcAeName(const std::string &srcAeName)
Definition: AEBase.cc:83
std::string srcApName
Definition: AEBase.h:93
const int getStartInvokeId()
Definition: AEBase.cc:202
const std::string & getAuthPassword() const
Definition: AEBase.cc:63
void setCdapConId(unsigned long cdapConId)
Definition: AEBase.cc:197