Switch to side-by-side view

--- a/src/DIF/FA/FAI.h
+++ b/src/DIF/FA/FAI.h
@@ -128,3 +128,244 @@
 std::ostream& operator<< (std::ostream& os, const FAI& fai);
 
 #endif /* FAI_H_ */
+//
+// Copyright ďż˝ 2014 PRISTINE Consortium (http://ict-pristine.eu)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public License
+// along with this program.  If not, see http://www.gnu.org/licenses/.
+// 
+/**
+ * @authors Vladimir Vesely (ivesely@fit.vutbr.cz)
+ * @date Last refactorized and documented on 2014-11-19
+ * @brief FlowAllocatorInstance class
+ */
+#ifndef FAI_H_
+#define FAI_H_
+
+//Standard libraries
+#include <omnetpp.h>
+//RINASim libraries
+#include "FAIBase.h"
+#include "FABase.h"
+#include "FAIListeners.h"
+#include "RINASignals.h"
+#include "EFCP.h"
+#include "ModuleAccess.h"
+#include "RABase.h"
+
+class FAI : public FAIBase  {
+  public:
+    FAI();
+    virtual ~FAI();
+
+    std::string info() const;
+
+    virtual bool receiveAllocateRequest();
+    virtual bool processDegenerateDataTransfer();
+    virtual bool receiveAllocateResponsePositive();
+    virtual void receiveAllocateResponseNegative();
+    virtual bool receiveCreateRequest();
+    virtual bool receiveCreateResponsePositive(Flow* flow);
+    virtual bool receiveCreateResponseNegative(Flow* flow);
+    virtual bool receiveDeallocateRequest();
+    virtual void receiveDeleteRequest();
+    virtual void receiveDeleteResponse();
+
+    virtual void receiveCreateFlowResponsePositiveFromNminusOne();
+    virtual void receiveCreateFlowResponseNegativeFromNminusOne();
+
+
+    void postInitialize(FABase* fa, Flow* fl, EFCP* efcp);
+
+    const FABase* getFa() const {
+        return FaModule;
+    }
+
+  protected:
+    int portId;
+    int cepId;
+
+    FABase* FaModule;
+
+    //Signals
+    simsignal_t sigFAIAllocReq;
+    simsignal_t sigFAIDeallocReq;
+    simsignal_t sigFAIDeallocRes;
+    simsignal_t sigFAIAllocResPosi;
+    simsignal_t sigFAIAllocResNega;
+    simsignal_t sigFAICreReq;
+    simsignal_t sigFAIDelReq;
+    simsignal_t sigFAIDelRes;
+    simsignal_t sigFAICreResNega;
+    simsignal_t sigFAICreResPosi;
+    //Listeners
+    LisFAIAllocReq*      lisAllocReq;
+    LisFAIAllocResNega*  lisAllocResNega;
+    LisFAIAllocResPosi*  lisAllocResPosi;
+    LisFAICreReq*        lisCreReq;
+    LisFAICreResNega*    lisCreResNega;
+    LisFAICreResPosi*    lisCreResPosi;
+    LisFAIDelReq*        lisDelReq;
+    LisFAIDelRes*        lisDelRes;
+    LisFAICreResPosiNminusOne* lisCreResPosiNmO;
+    LisFAICreResNegaNminusOne* lisCreResNegaNmO;
+
+    virtual void initialize();
+    virtual void handleMessage(cMessage *msg);
+
+  private:
+    EFCP* efcp;
+    cGate* southI;
+    cGate* southO;
+    cGate* northI;
+    cGate* northO;
+
+    void initSignalsAndListeners();
+
+    bool createEFCP();
+    void createNorthGates();
+    bool createBindings();
+    bool deleteBindings();
+
+    bool invokeAllocateRetryPolicy();
+
+    void signalizeCreateFlowRequest();
+    void signalizeCreateFlowResponsePositive();
+    void signalizeCreateFlowResponseNegative();
+    void signalizeDeleteFlowRequest();
+    void signalizeDeleteFlowResponse();
+    void signalizeAllocationRequestFromFai();
+    void signalizeDeallocateRequestFromFai();
+    void signalizeDeallocateResponseFromFai();
+    void signalizeAllocateResponseNegative();
+    void signalizeAllocateResponsePositive();
+
+};
+
+//Free function
+std::ostream& operator<< (std::ostream& os, const FAI& fai);
+
+#endif /* FAI_H_ */
+// Copyright \ufffd 2014 PRISTINE Consortium (http://ict-pristine.eu)
+/**
+ * @authors Vladimir Vesely (ivesely@fit.vutbr.cz)
+ * @date Last refactorized and documented on 2014-11-19
+ * @brief FlowAllocatorInstance class
+ */
+#ifndef FAI_H_
+#define FAI_H_
+
+//Standard libraries
+#include <omnetpp.h>
+//RINASim libraries
+#include "FAIBase.h"
+#include "FABase.h"
+#include "FAIListeners.h"
+#include "RINASignals.h"
+#include "EFCP.h"
+#include "ModuleAccess.h"
+#include "RABase.h"
+
+class FAI : public FAIBase  {
+  public:
+    FAI();
+    virtual ~FAI();
+
+    std::string info() const;
+
+    virtual bool receiveAllocateRequest();
+    virtual bool processDegenerateDataTransfer();
+    virtual bool receiveAllocateResponsePositive();
+    virtual void receiveAllocateResponseNegative();
+    virtual bool receiveCreateRequest();
+    virtual bool receiveCreateResponsePositive(Flow* flow);
+    virtual bool receiveCreateResponseNegative(Flow* flow);
+    virtual bool receiveDeallocateRequest();
+    virtual void receiveDeleteRequest();
+    virtual void receiveDeleteResponse();
+
+    virtual void receiveCreateFlowResponsePositiveFromNminusOne();
+    virtual void receiveCreateFlowResponseNegativeFromNminusOne();
+
+
+    void postInitialize(FABase* fa, Flow* fl, EFCP* efcp);
+
+    const FABase* getFa() const {
+        return FaModule;
+    }
+
+  protected:
+    int portId;
+    int cepId;
+
+    FABase* FaModule;
+
+    //Signals
+    simsignal_t sigFAIAllocReq;
+    simsignal_t sigFAIDeallocReq;
+    simsignal_t sigFAIDeallocRes;
+    simsignal_t sigFAIAllocResPosi;
+    simsignal_t sigFAIAllocResNega;
+    simsignal_t sigFAICreReq;
+    simsignal_t sigFAIDelReq;
+    simsignal_t sigFAIDelRes;
+    simsignal_t sigFAICreResNega;
+    simsignal_t sigFAICreResPosi;
+    //Listeners
+    LisFAIAllocReq*      lisAllocReq;
+    LisFAIAllocResNega*  lisAllocResNega;
+    LisFAIAllocResPosi*  lisAllocResPosi;
+    LisFAICreReq*        lisCreReq;
+    LisFAICreResNega*    lisCreResNega;
+    LisFAICreResPosi*    lisCreResPosi;
+    LisFAIDelReq*        lisDelReq;
+    LisFAIDelRes*        lisDelRes;
+    LisFAICreResPosiNminusOne* lisCreResPosiNmO;
+    LisFAICreResNegaNminusOne* lisCreResNegaNmO;
+
+    virtual void initialize();
+    virtual void handleMessage(cMessage *msg);
+
+  private:
+    EFCP* efcp;
+    cGate* southI;
+    cGate* southO;
+    cGate* northI;
+    cGate* northO;
+
+    void initSignalsAndListeners();
+
+    bool createEFCP();
+    void createNorthGates();
+    bool createBindings();
+    bool deleteBindings();
+
+    bool invokeAllocateRetryPolicy();
+
+    void signalizeCreateFlowRequest();
+    void signalizeCreateFlowResponsePositive();
+    void signalizeCreateFlowResponseNegative();
+    void signalizeDeleteFlowRequest();
+    void signalizeDeleteFlowResponse();
+    void signalizeAllocationRequestFromFai();
+    void signalizeDeallocateRequestFromFai();
+    void signalizeDeallocateResponseFromFai();
+    void signalizeAllocateResponseNegative();
+    void signalizeAllocateResponsePositive();
+
+};
+
+//Free function
+std::ostream& operator<< (std::ostream& os, const FAI& fai);
+
+#endif /* FAI_H_ */