Switch to side-by-side view

--- a
+++ b/src/DAF/IRM/ConnectionTableEntry.cc
@@ -0,0 +1,140 @@
+//
+// 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 <ConnectionTableEntry.h>
+
+ConnectionTableEntry::ConnectionTableEntry()
+    :  FlowObject(NULL), conStatus(UNKNOWN),
+       northGateIn(NULL), northGateOut(NULL),
+       southGateIn(NULL), southGateOut(NULL),
+       FlowAlloc(NULL)
+{
+}
+
+ConnectionTableEntry::ConnectionTableEntry(Flow* flow)
+    :  FlowObject(flow), conStatus(FLOWPENDING),
+       northGateIn(NULL), northGateOut(NULL),
+       southGateIn(NULL), southGateOut(NULL),
+       FlowAlloc(NULL)
+{
+}
+
+ConnectionTableEntry::ConnectionTableEntry(Flow* flow, cGate* nIn, cGate* nOut)
+:  FlowObject(flow), conStatus(FLOWPENDING),
+   northGateIn(nIn), northGateOut(nOut),
+   southGateIn(NULL), southGateOut(NULL),
+   FlowAlloc(NULL)
+{
+}
+
+ConnectionTableEntry::~ConnectionTableEntry() {
+    this->FlowObject = NULL;
+    this->conStatus = UNKNOWN;
+    this->northGateIn = NULL;
+    this->northGateOut = NULL;
+    this->southGateIn = NULL;
+    this->southGateOut = NULL;
+    this->FlowAlloc = NULL;
+}
+
+std::string ConnectionTableEntry::info() const {
+    std::stringstream os;
+    if (FlowObject)
+        os << FlowObject->info() << "\n";
+    if (FlowAlloc)
+        os << "FA path: " << FlowAlloc->getFullPath() << "\n";
+    if (northGateIn && northGateOut)
+        os << "northIn: " << this->northGateIn->getName() << "[" << this->northGateIn->getIndex() << "]"
+           << "\tnorthOut: " << this->northGateOut->getName() << "[" << this->northGateIn->getIndex() << "]\n";
+    if (southGateIn && southGateOut)
+        os << "southIn: " << this->southGateIn->getName()
+           << "\tsouthOut: " << this->southGateOut->getName() << "\n";
+    os << "status: " << this->getConnectionStatusString();
+    return os.str();
+}
+
+std::string ConnectionTableEntry::getConnectionStatusString() const {
+    switch(this->conStatus)
+    {
+        case NIL:               return "NULL";
+        case FLOWPENDING:       return "flowpending";
+        case CONNECTPENDING:    return "connectpending";
+        case AUTHENTICATING:    return "authenticating";
+        case ESTABLISHED:       return "established";
+        case RELEASING:         return "releasing";
+        case UNKNOWN:
+        default:                return "UNKNOWN";
+    }
+}
+
+void ConnectionTableEntry::setConStatus(ConnectionStatus conStatus) {
+    this->conStatus = conStatus;
+}
+
+std::ostream& operator <<(std::ostream& os, const ConnectionTableEntry& cte) {
+    return os << cte.info();
+}
+
+FABase* ConnectionTableEntry::getFlowAlloc() const {
+    return FlowAlloc;
+}
+
+void ConnectionTableEntry::setFlowAlloc(FABase* flowAlloc) {
+    FlowAlloc = flowAlloc;
+}
+
+Flow* ConnectionTableEntry::getFlowObject() const {
+    return FlowObject;
+}
+
+void ConnectionTableEntry::setFlowObject(Flow* flowObject) {
+    FlowObject = flowObject;
+}
+
+cGate* ConnectionTableEntry::getNorthGateIn() const {
+    return northGateIn;
+}
+
+void ConnectionTableEntry::setNorthGateIn(cGate* northGateIn) {
+    this->northGateIn = northGateIn;
+}
+
+cGate* ConnectionTableEntry::getNorthGateOut() const {
+    return northGateOut;
+}
+
+void ConnectionTableEntry::setNorthGateOut(cGate* northGateOut) {
+    this->northGateOut = northGateOut;
+}
+
+cGate* ConnectionTableEntry::getSouthGateIn() const {
+    return southGateIn;
+}
+
+void ConnectionTableEntry::setSouthGateIn(cGate* southGateIn) {
+    this->southGateIn = southGateIn;
+}
+
+cGate* ConnectionTableEntry::getSouthGateOut() const {
+    return southGateOut;
+}
+
+void ConnectionTableEntry::setSouthGateOut(cGate* southGateOut) {
+    this->southGateOut = southGateOut;
+}
+
+cModule* ConnectionTableEntry::getIpc() const {
+    return FlowAlloc->getParentModule()->getParentModule();
+}