NetAnim: more compact packet format
authorJohn Abraham <john.abraham.in@gmail.com>
Tue, 04 Sep 2012 11:06:39 -0400
changeset 9064 21326214dcd5
parent 9063 32755d0516f4
child 9065 bd7190a9e4e8
NetAnim: more compact packet format
src/netanim/model/animation-interface.cc
src/netanim/model/animation-interface.h
src/netanim/wscript
--- a/src/netanim/model/animation-interface.cc	Sat Sep 01 20:57:21 2012 +0200
+++ b/src/netanim/model/animation-interface.cc	Tue Sep 04 11:06:39 2012 -0400
@@ -105,7 +105,7 @@
 
 std::string AnimationInterface::GetNetAnimVersion ()
 {
-  return "netanim-3.101";
+  return "netanim-3.102";
 }
 
 void AnimationInterface::SetStartTime (Time t)
@@ -714,9 +714,7 @@
   double lbRx = now.GetSeconds ();
   if (m_xml)
     {
-      oss << GetXMLOpen_packet (0, 0, fbTx, lbTx, "DummyPktIgnoreThis");
-      oss << GetXMLOpenClose_rx (0, 0, fbRx, lbRx);
-      oss << GetXMLClose ("packet");
+      oss << GetXMLOpenClose_p ("p", 0, fbTx, lbTx, 0, fbRx, lbRx, "", "DummyPktIgnoreThis");
     }
   WriteN (oss.str ());
 
@@ -738,11 +736,8 @@
   double lbRx = (now + rxTime).GetSeconds ();
   if (m_xml)
     {
-      oss << GetXMLOpen_packet (0, tx->GetNode ()->GetId (), fbTx, lbTx);
-      oss << GetXMLOpenClose_rx (0, rx->GetNode ()->GetId (), fbRx, lbRx); 
-      if (m_enablePacketMetadata)
-        oss << GetXMLOpenClose_meta (GetPacketMetadata (p));
-      oss << GetXMLClose ("packet");
+      oss << GetXMLOpenClose_p ("p", tx->GetNode ()->GetId (), fbTx, lbTx, rx->GetNode ()->GetId (), 
+                                fbRx, lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
       StartNewTraceFile ();
       ++m_currentPktCount;
     }
@@ -1255,7 +1250,7 @@
   RecalcTopoBounds (v);
   std::ostringstream oss; 
   oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
-  oss << GetXMLOpenClose_node (0,n->GetId (),v.x,v.y);
+  oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, nodeColors[n->GetId ()]);
   oss << GetXMLClose ("topology");
   WriteN (oss.str ());
   WriteDummyPacket ();
@@ -1395,14 +1390,10 @@
     nodeId = pktInfo.m_txNodeId;
 
   double lbTx = pktInfo.firstlastbitDelta + pktInfo.m_fbTx;
-  oss << GetXMLOpen_wpacket (0, nodeId, pktInfo.m_fbTx, lbTx, pktrxInfo.rxRange);
+  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
 
-  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
-  oss << GetXMLOpenClose_rx (0, rxId, pktrxInfo.m_fbRx, pktrxInfo.m_lbRx);
-  if (m_enablePacketMetadata)
-    oss << GetXMLOpenClose_meta (GetPacketMetadata (p));
-
-  oss << GetXMLClose ("wpacket");
+  oss << GetXMLOpenClose_p ("wp", nodeId, pktInfo.m_fbTx, lbTx, rxId,
+                            pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
   WriteN (oss.str ());
 }
 
@@ -1413,13 +1404,10 @@
   std::ostringstream oss;
   NS_ASSERT (pktInfo.m_txnd);
   uint32_t nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
+  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
 
-  oss << GetXMLOpen_packet (0, nodeId, pktInfo.m_fbTx, pktInfo.m_lbTx);
-  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
-  oss << GetXMLOpenClose_rx (0, rxId, pktrxInfo.m_fbRx, pktrxInfo.m_lbRx);
-  if (m_enablePacketMetadata)
-    oss << GetXMLOpenClose_meta (GetPacketMetadata (p));
-  oss << GetXMLClose ("packet");
+  oss << GetXMLOpenClose_p ("p", nodeId, pktInfo.m_fbTx, pktInfo.m_lbTx, rxId,
+                            pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
   WriteN (oss.str ());
 }
 
@@ -1712,14 +1700,37 @@
 {
   std::ostringstream oss;
   oss << std::setprecision (10);
-  oss << "<packet fromId=\"" << fromId
+  oss << "<p fId=\"" << fromId
       << "\" fbTx=\"" << fbTx
       << "\" lbTx=\"" << lbTx
-      << (auxInfo.empty()?"":"\" aux=\"") << auxInfo.c_str ()
-      << "\">";
+      << (auxInfo.empty()?"":"\" aux=\"") << auxInfo.c_str () << "\">";
   return oss.str ();
 }
 
+
+std::string AnimationInterface::GetXMLOpenClose_p (std::string pktType, uint32_t fId, double fbTx, double lbTx, 
+                                                   uint32_t tId, double fbRx, double lbRx, std::string metaInfo, 
+                                                   std::string auxInfo)
+{
+  std::ostringstream oss;
+  oss << std::setprecision (10);
+  oss << "<" << pktType << " fId=\"" << fId
+      << "\" fbTx=\"" << fbTx
+      << "\" lbTx=\"" << lbTx << "\"";
+  if (!auxInfo.empty ())
+    {
+      oss << " aux=\"" << auxInfo.c_str () << "\"";
+    }
+  if (!metaInfo.empty ())
+    {
+      oss << " meta-info=\"" << metaInfo.c_str () << "\"";
+    }
+  oss << " tId=\"" << tId << "\" fbRx=\"" << fbRx << "\" lbRx=\"" << lbRx << "\">" << std::endl;
+  return oss.str ();
+}
+
+
+
 std::string AnimationInterface::GetXMLOpen_wpacket (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, double range)
 {
   std::ostringstream oss;
--- a/src/netanim/model/animation-interface.h	Sat Sep 01 20:57:21 2012 +0200
+++ b/src/netanim/model/animation-interface.h	Tue Sep 04 11:06:39 2012 -0400
@@ -573,6 +573,8 @@
   std::string GetXMLOpenClose_link (uint32_t fromLp, uint32_t fromId, uint32_t toLp, uint32_t toId);
   std::string GetXMLOpenClose_linkupdate (uint32_t fromId, uint32_t toId, std::string);
   std::string GetXMLOpen_packet (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, std::string auxInfo = "");
+  std::string GetXMLOpenClose_p (std::string pktType, uint32_t fId, double fbTx, double lbTx, uint32_t tId, double fbRx, double lbRx,
+                                 std::string metaInfo = "", std::string auxInfo = "");
   std::string GetXMLOpenClose_rx (uint32_t toLp, uint32_t toId, double fbRx, double lbRx);
   std::string GetXMLOpen_wpacket (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, double range);
   std::string GetXMLClose (std::string name) {return "</" + name + ">\n"; }
--- a/src/netanim/wscript	Sat Sep 01 20:57:21 2012 +0200
+++ b/src/netanim/wscript	Tue Sep 04 11:06:39 2012 -0400
@@ -3,7 +3,7 @@
 import wutils
 
 # Required NetAnim version
-NETANIM_RELEASE_NAME = "netanim-3.101"
+NETANIM_RELEASE_NAME = "netanim-3.102"
 
 
 def build (bld) :