Switch to side-by-side view

--- a/src/DAF/AE/AE.cc
+++ b/src/DAF/AE/AE.cc
@@ -1,17 +1,24 @@
+// The MIT License (MIT)
 //
-// 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/.
-// 
+// Copyright (c) 2014-2016 Brno University of Technology, PRISTINE project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
 
 #include "AE.h"
 
@@ -65,17 +72,6 @@
 
     lisAEAllResNega = new LisAEAllResNega(this);
     catcher2->subscribe(SIG_FAI_AllocateResponseNegative, lisAEAllResNega);
-
-    lisAEConResPosi = new LisAEConResPosi(this);
-    catcher1->subscribe(SIG_CACE_ConnectionResponsePositive, lisAEConResPosi);
-
-    lisAEConResNega = new LisAEConResNega(this);
-    catcher1->subscribe(SIG_CACE_ConnectionResponseNegative, lisAEConResNega);
-
-    lisAERelRes = new LisAERelRes(this);
-    catcher1->subscribe(SIG_CACE_ReleaseResponse, lisAERelRes);
-
-
 }
 
 void AE::initialize() {
@@ -187,25 +183,27 @@
     Enter_Method("receiveAllocationRequestFromFai()");
     //EV << this->getFullPath() << " received AllocationRequest from FAI" << endl;
 
-    //TODO: Vesely - More sophisticated decission
-    if (QoSRequirements.countFeasibilityScore(flow->getQosParameters()) > 0) {
+    if ( QoSRequirements.compare(flow->getQosRequirements()) ) {
         //Initialize flow within AE
         FlowObject = flow;
         insertFlow();
         //EV << "======================" << endl << flow->info() << endl;
         //Interconnect IRM and IPC
 
-        Irm->receiveAllocationResponsePositiveFromIpc(flow) ?
-                Irm->changeStatus(FlowObject, ConnectionTableEntry::CON_CONNECTPENDING)
-                :
-                Irm->changeStatus(FlowObject, ConnectionTableEntry::CON_ERROR);
+        bool status = Irm->receiveAllocationResponsePositiveFromIpc(flow);
 
         //Change connection status
-        changeConStatus(CONNECTION_PENDING);
-        this->signalizeAllocateResponsePositive(FlowObject);
+        if (status) {
+            changeConStatus(CONNECTION_PENDING);
+            this->signalizeAllocateResponsePositive(FlowObject);
+        }
+        else {
+            EV << "IRM was unable to create bindings!" << endl;
+        }
     }
     else {
-        this->signalizeAllocateResponseNegative(FlowObject);
+        EV << "QoS Requirement cannot be met, please check AE attributes!" << endl;
+        this->signalizeAllocateResponseNegative(flow);
     }
 }
 
@@ -233,9 +231,6 @@
     Enter_Method("receiveAllocationResponsePositive()");
     //Interconnect IRM and IPC
     Irm->receiveAllocationResponsePositiveFromIpc(flow);
-
-    //Change allocation status
-    Irm->changeStatus(flow, ConnectionTableEntry::CON_CONNECTPENDING);
 
     //Change connection status
     changeConStatus(CONNECTION_PENDING);