RINASim  October 2016
Documentation of framework for OMNeT++
FAI.h
Go to the documentation of this file.
1 //
2 // The MIT License (MIT)
3 //
4 // Copyright (c) 2014-2016 Brno University of Technology, PRISTINE project
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // of this software and associated documentation files (the "Software"), to deal
8 // in the Software without restriction, including without limitation the rights
9 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 // copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
12 //
13 // The above copyright notice and this permission notice shall be included in
14 // all copies or substantial portions of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 // THE SOFTWARE.
28 #ifndef FAI_H_
29 #define FAI_H_
30 
31 //Standard libraries
32 #include <omnetpp.h>
33 //RINASim libraries
34 #include "FAIBase.h"
35 #include "FABase.h"
36 #include "FAIListeners.h"
37 #include "RINASignals.h"
38 #include "EFCP.h"
39 #include "AllocateRetryBase.h"
40 
41 //#include "PushBackChannel.h"
42 
43 //Constants
44 extern const char* TIM_CREREQ;
45 extern const char* MOD_ALLOCRETRYPOLICY;
46 
47 class FAI : public FAIBase {
48  public:
49  FAI();
50  virtual ~FAI();
51 
52  std::string info() const;
53 
54  virtual bool receiveAllocateRequest();
55  virtual bool receiveAllocateResponsePositive();
56  virtual void receiveAllocateResponseNegative();
57  virtual bool receiveCreateRequest();
58  virtual bool receiveCreateResponsePositive(Flow* flow);
59  virtual bool receiveCreateResponseNegative();
60  virtual bool receiveDeallocateRequest();
61  virtual void receiveDeleteRequest(Flow* flow);
62  virtual void receiveDeleteResponse();
63 
66 
67 
68  void postInitialize(FABase* fa, Flow* fl, EFCP* efcp);
69 
70  const FABase* getFa() const {
71  return FaModule;
72  }
73 
74  int getLocalCepId() const;
75  void setLocalCepId(int localCepId);
76  int getLocalPortId() const;
77  void setLocalPortId(int localPortId);
78  int getRemoteCepId() const;
79  void setRemoteCepId(int remoteCepId);
80  int getRemotePortId() const;
81  void setRemotePortId(int remotePortId);
82 
83  protected:
88 
90 
91  cMessage* creReqTimer;
92  //double creReqTimeout;
93 
95 
96  //Signals
97  simsignal_t sigFAIAllocReq;
98  simsignal_t sigFAIDeallocReq;
99  simsignal_t sigFAIDeallocRes;
100  simsignal_t sigFAIAllocResPosi;
101  simsignal_t sigFAIAllocResNega;
102  simsignal_t sigFAICreReq;
103  simsignal_t sigFAIDelReq;
104  simsignal_t sigFAIDelRes;
105  simsignal_t sigFAICreResNega;
106  simsignal_t sigFAICreResPosi;
107 
108  //Listeners
118 
119  virtual void initialize();
120  virtual void handleMessage(cMessage *msg);
121 
122  private:
124 
126 
127  bool createEFCPI();
128  void createNorthGates();
129  bool createBindings();
130  bool deleteBindings();
131 
133 
145 
146 };
147 
148 //Free function
149 std::ostream& operator<< (std::ostream& os, const FAI& fai);
150 
151 #endif /* FAI_H_ */
EFCP * EfcpModule
Definition: FAI.h:123
virtual void receiveDeleteRequest(Flow *flow)
Definition: FAI.cc:235
LisFAIDelRes * lisDelRes
Definition: FAI.h:115
Class representing flow object with attributes from specs.
Definition: Flow.h:45
std::ostream & operator<<(std::ostream &os, const FAI &fai)
Definition: FAI.cc:353
AllocateRetryBase * AllocRetryPolicy
Definition: FAI.h:89
int getRemotePortId() const
Definition: FAI.cc:632
void signalizeDeleteFlowRequest()
Definition: FAI.cc:592
simsignal_t sigFAIDeallocReq
Definition: FAI.h:98
int getLocalPortId() const
Definition: FAI.cc:616
const char * TIM_CREREQ
FlowAllocatorInstance class.
Definition: FAI.cc:25
void createNorthGates()
Definition: FAI.cc:644
void signalizeAllocateResponsePositive()
Definition: FAI.cc:640
void signalizeCreateFlowRequest()
Definition: FAI.cc:566
void signalizeCreateFlowResponsePositive()
Definition: FAI.cc:579
void signalizeDeallocateResponseFromFai()
Definition: FAI.cc:604
virtual bool receiveAllocateResponsePositive()
Definition: FAI.cc:122
int remoteCEPId
Definition: FAI.h:87
void setRemotePortId(int remotePortId)
Definition: FAI.cc:636
int localPortId
Definition: FAI.h:84
std::string info() const
Definition: FAI.cc:344
void initSignalsAndListeners()
Definition: FAI.cc:514
virtual void handleMessage(cMessage *msg)
Definition: FAI.cc:332
bool invokeAllocateRetryPolicy()
Definition: FAI.cc:508
LisFAIAllocResNega * lisAllocResNega
Definition: FAI.h:110
LisFAIAllocReq * lisAllocReq
Definition: FAI.h:109
FAI()
Definition: FAI.cc:30
LisFAIDelReq * lisDelReq
Definition: FAI.h:114
virtual void receiveDeleteResponse()
Definition: FAI.cc:314
LisFAICreResNega * lisCreResNega
Definition: FAI.h:112
bool createBindings()
Definition: FAI.cc:364
Definition: EFCP.h:54
int getLocalCepId() const
Definition: FAI.cc:608
virtual void receiveAllocateResponseNegative()
Definition: FAI.cc:167
Definition: FAI.h:47
bool createEFCPI()
Definition: FAI.cc:357
LisFAICreResNegaNminusOne * lisCreResNegaNmO
Definition: FAI.h:117
FABase * FaModule
Definition: FAI.h:94
int remotePortId
Definition: FAI.h:86
virtual bool receiveCreateResponseNegative()
Definition: FAI.cc:264
LisFAICreResPosiNminusOne * lisCreResPosiNmO
Definition: FAI.h:116
simsignal_t sigFAIAllocResPosi
Definition: FAI.h:100
virtual void receiveCreateFlowResponsePositiveFromNminusOne()
Definition: FAI.cc:665
virtual bool receiveAllocateRequest()
Definition: FAI.cc:71
void setLocalPortId(int localPortId)
Definition: FAI.cc:620
simsignal_t sigFAIDelReq
Definition: FAI.h:103
virtual bool receiveCreateRequest()
Definition: FAI.cc:184
simsignal_t sigFAICreResPosi
Definition: FAI.h:106
LisFAIAllocResPosi * lisAllocResPosi
Definition: FAI.h:111
simsignal_t sigFAIAllocResNega
Definition: FAI.h:101
void setLocalCepId(int localCepId)
Definition: FAI.cc:612
const FABase * getFa() const
Definition: FAI.h:70
simsignal_t sigFAIDeallocRes
Definition: FAI.h:99
void signalizeDeleteFlowResponse()
Definition: FAI.cc:574
cMessage * creReqTimer
Definition: FAI.h:91
virtual void receiveCreateFlowResponseNegativeFromNminusOne()
Definition: FAI.cc:671
virtual bool receiveCreateResponsePositive(Flow *flow)
Definition: FAI.cc:284
int getRemoteCepId() const
Definition: FAI.cc:624
simsignal_t sigFAICreReq
Definition: FAI.h:102
void setRemoteCepId(int remoteCepId)
Definition: FAI.cc:628
LisFAICreResPosi * lisCreResPosi
Definition: FAI.h:113
void signalizeAllocationRequestFromFai()
Definition: FAI.cc:587
virtual void initialize()
Definition: FAI.cc:48
virtual ~FAI()
Definition: FAI.cc:35
Definition: FABase.h:33
void postInitialize(FABase *fa, Flow *fl, EFCP *efcp)
Definition: FAI.cc:64
bool deleteBindings()
Definition: FAI.cc:439
simsignal_t sigFAIAllocReq
Definition: FAI.h:97
void signalizeCreateFlowResponseNegative()
Definition: FAI.cc:583
void signalizeAllocateResponseNegative()
Definition: FAI.cc:596
void signalizeDeallocateRequestFromFai()
Definition: FAI.cc:600
virtual bool receiveDeallocateRequest()
Definition: FAI.cc:215
void signalizeAllocateRequestToOtherFais(Flow *flow)
int localCEPId
Definition: FAI.h:85
const char * MOD_ALLOCRETRYPOLICY
Definition: FAI.cc:26
simsignal_t sigFAIDelRes
Definition: FAI.h:104
simsignal_t sigFAICreResNega
Definition: FAI.h:105