Switch to side-by-side view

--- a
+++ b/src/policies/DIF/FA/NewFlowRequest/QoSCubeComparer/QoSCubeComparer.cc
@@ -0,0 +1,52 @@
+//
+// 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/.
+// 
+
+#include <QoSCubeComparer.h>
+
+Define_Module(QoSCubeComparer);
+
+bool QoSCubeComparer::run(Flow& flow) {
+    Enter_Method("invokeNewFlowRequestPolicy()");
+    //Is flow policy acceptable
+    std::string apname = flow.getSrcApni().getApn().getName();
+
+    //FIXME: Vesely - Simulate error and DTCP flag better
+    if ( apname.find("Err") != std::string::npos) {
+        return false;
+    }
+
+    //TODO: Compare QoS Parameters with available QoS cubes
+    QoSCubeSet cubes = ResourceAllocator->getQoSCubes();
+    //EV << ResourceAllocator->getQoSCubes();
+
+    unsigned short qosid = 0;
+    short score = 0;
+
+    for (QCubeCItem it = cubes.begin(); it != cubes.end(); ++it) {
+        short tmpscore = flow.getQosParameters().countFeasibilityScore(*it);
+//        EV << "QosID: " << it->getQosId()
+//           << " tmpscore: " << tmpscore
+//           << " score: " << score << endl
+//           << " qosid: " << qosid << endl;
+        if (score < tmpscore) {
+            score = tmpscore;
+            qosid = it->getQosId();
+        }
+    }
+    flow.getConnectionId().setQoSId(qosid);
+    return qosid ? true : false;
+
+}
+