--- a
+++ b/src/DIF/RIB/RIBd.h
@@ -0,0 +1,111 @@
+//
+// 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/.
+//
+/**
+ * @file RIBd.cc
+ * @author Vladimir Vesely (ivesely@fit.vutbr.cz)
+ * @date Apr 30, 2014
+ * @brief Kind of a Notification Board for DIF
+ * @detail
+ */
+
+#ifndef RIBDAEMON_H_
+#define RIBDAEMON_H_
+
+//Standard libraries
+#include <omnetpp.h>
+//RINASim libraries
+#include "RIBdBase.h"
+#include "ExternConsts.h"
+#include "RIBdListeners.h"
+#include "RINASignals.h"
+
+//Constants
+extern const char* MSG_FLO;
+extern const char* CLS_FLOW;
+extern const char* MSG_FLOPOSI;
+extern const char* MSG_FLONEGA;
+extern const int VAL_DEFINSTANCE;
+extern const int VAL_FLOWPOSI;
+extern const int VAL_FLOWNEGA;
+extern const char* VAL_FLREQ;
+extern const char* VAL_FLREQPOSI;
+extern const char* VAL_FLREQNEGA;
+
+class RIBd : public RIBdBase {
+ public:
+ virtual void sendCreateRequestFlow(Flow* flow);
+ virtual void sendCreateResponseNegative(Flow* flow);
+ virtual void sendCreateResponsePostive(Flow* flow);
+ virtual void sendDeleteRequestFlow(Flow* flow);
+ virtual void sendDeleteResponseFlow(Flow* flow);
+ virtual void receiveData(CDAPMessage* cimsg);
+ virtual void receiveAllocationRequestFromFai(Flow* flow);
+ virtual void receiveCreateFlowPositiveFromRa(Flow* flow);
+ virtual void receiveCreateFlowNegativeFromRa(Flow* flow);
+
+ protected:
+ virtual void initialize();
+ virtual void handleMessage(cMessage *msg);
+
+ void initCdapBindings();
+ void initSignalsAndListeners();
+
+ //Signals
+ simsignal_t sigRIBDSendData;
+ simsignal_t sigRIBDCreReqFlo;
+ simsignal_t sigRIBDDelReqFlo;
+ simsignal_t sigRIBDDelResFlo;
+ simsignal_t sigRIBDCreResFloPosi;
+ simsignal_t sigRIBDCreResFloNega;
+ simsignal_t sigRIBDAllocResPosi;
+ simsignal_t sigRIBDAllocResNega;
+ simsignal_t sigRIBDCreFlow;
+
+ //Listeners
+ LisRIBDRcvData* lisRIBDRcvData;
+ LisRIBDCreReq* lisRIBDCreReq;
+ LisRIBDCreReq* lisRIBDCreReqByForward;
+ LisRIBDAllReqFromFai* lisRIBDAllReqFromFai;
+ LisRIBDCreResNega* lisRIBDCreResNega;
+ LisRIBDCreResNega* lisRIBDCreResNegaFromFa;
+ LisRIBDCreResPosi* lisRIBDCreResPosi;
+ LisRIBDCreResPosi* lisRIBDCreResPosiForward;
+ LisRIBDDelReq* lisRIBDDelReq;
+ LisRIBDDelRes* lisRIBDDelRes;
+ LisRIBDCreFloPosi* lisRIBDCreFloPosi;
+ LisRIBDCreFloNega* lisRIBDCreFloNega;
+
+ void signalizeSendData(CDAPMessage* msg);
+ void signalizeCreateRequestFlow(Flow* flow);
+ void signalizeDeleteRequestFlow(Flow* flow);
+ void signalizeDeleteResponseFlow(Flow* flow);
+ void signalizeAllocateResponsePositive(Flow* flow);
+ void signalizeAllocateResponseNegative(Flow* flow);
+ void signalizeCreateFlow(Flow* flow);
+ void signalizeCreateResponseFlowPositive(Flow* flow);
+ void signalizeCreateResponseFlowNegative(Flow* flow);
+
+ void processMCreate(CDAPMessage* msg);
+ void processMCreateR(CDAPMessage* msg);
+ void processMDelete(CDAPMessage* msg);
+ void processMDeleteR(CDAPMessage* msg);
+
+ private:
+ int invokeIdCounter;
+};
+
+#endif /* RIBDAEMON_H_ */