src/core/object.cc
changeset 2542 a9b88fdc09d6
parent 2531 b451b5fc8b57
child 2569 d5cff2968984
--- a/src/core/object.cc	Sun Mar 02 22:53:11 2008 +0100
+++ b/src/core/object.cc	Mon Mar 03 01:58:57 2008 +0100
@@ -21,7 +21,6 @@
 #include "object.h"
 #include "assert.h"
 #include "singleton.h"
-#include "trace-resolver.h"
 #include "attribute.h"
 #include "trace-source-accessor.h"
 #include "log.h"
@@ -373,73 +372,8 @@
 
 } // anonymous namespace
 
-/*********************************************************************
- *         The TypeId TraceResolver
- *********************************************************************/
-
 namespace ns3 {
 
-class TypeIdTraceResolver : public TraceResolver
-{
-public:
-  TypeIdTraceResolver (Ptr<const Object> aggregate);
-  virtual void Connect (std::string path, CallbackBase const &cb, const TraceContext &context);
-  virtual void Disconnect (std::string path, CallbackBase const &cb);
-  virtual void CollectSources (std::string path, const TraceContext &context, 
-                               SourceCollection *collection);
-  virtual void TraceAll (std::ostream &os, const TraceContext &context);
-private:
-  Ptr<const Object> ParseForInterface (std::string path);
-  Ptr<const Object> m_aggregate;
-};
-
-TypeIdTraceResolver::TypeIdTraceResolver (Ptr<const Object> aggregate)
-  : m_aggregate (aggregate)
-{}
-Ptr<const Object>
-TypeIdTraceResolver::ParseForInterface (std::string path)
-{
-  std::string element = GetElement (path);
-  std::string::size_type dollar_pos = element.find ("$");
-  if (dollar_pos != 0)
-    {
-      return 0;
-    }
-  std::string interfaceName = element.substr (1, std::string::npos);
-  TypeId interfaceId = TypeId::LookupByName (interfaceName);
-  Ptr<Object> interface = m_aggregate->GetObject<Object> (interfaceId);
-  return interface;
-}
-void  
-TypeIdTraceResolver::Connect (std::string path, CallbackBase const &cb, const TraceContext &context)
-{
-  Ptr<const Object> interface = ParseForInterface (path);
-  if (interface != 0)
-    {
-      interface->GetTraceResolver ()->Connect (GetSubpath (path), cb, context);
-    }
-}
-void 
-TypeIdTraceResolver::Disconnect (std::string path, CallbackBase const &cb)
-{
-  Ptr<const Object> interface = ParseForInterface (path);
-  if (interface != 0)
-    {
-      interface->TraceDisconnect (GetSubpath (path), cb);
-    }
-}
-void 
-TypeIdTraceResolver::CollectSources (std::string path, const TraceContext &context, 
-                                          SourceCollection *collection)
-{
-  m_aggregate->DoCollectSources (path, context, collection);
-}
-void 
-TypeIdTraceResolver::TraceAll (std::ostream &os, const TraceContext &context)
-{
-  m_aggregate->DoTraceAll (os, context);
-}
-
 /*********************************************************************
  *         The TypeId class
  *********************************************************************/
@@ -1253,19 +1187,6 @@
 }
 
 void 
-Object::TraceConnect (std::string path, const CallbackBase &cb) const
-{
-  NS_ASSERT (CheckLoose ());
-  GetTraceResolver ()->Connect (path, cb, TraceContext ());
-}
-void 
-Object::TraceDisconnect (std::string path, const CallbackBase &cb) const
-{
-  NS_ASSERT (CheckLoose ());
-  GetTraceResolver ()->Disconnect (path, cb);
-}
-
-void 
 Object::SetTypeId (TypeId tid)
 {
   NS_ASSERT (Check ());
@@ -1278,14 +1199,6 @@
   NS_ASSERT (!m_disposed);
 }
 
-Ptr<TraceResolver>
-Object::GetTraceResolver (void) const
-{
-  NS_ASSERT (CheckLoose ());
-  Ptr<TypeIdTraceResolver> resolver =
-    Create<TypeIdTraceResolver> (this);
-  return resolver;
-}
 
 bool 
 Object::Check (void) const
@@ -1354,77 +1267,12 @@
   } while (current != end);
 }
 
-void 
-Object::DoCollectSources (std::string path, const TraceContext &context, 
-                          TraceResolver::SourceCollection *collection) const
-{
-  const Object *current;
-  current = this;
-  do {
-    if (current->m_collecting)
-      {
-        return;
-      }
-    current = current->m_next;
-  } while (current != this);
-
-  m_collecting = true;
-
-  current = this->m_next;
-  while (current != this)
-    {
-      NS_ASSERT (current != 0);
-      NS_LOG_LOGIC ("collect current=" << current);
-      TypeId cur = current->m_tid;
-      while (cur != Object::GetTypeId ())
-        {
-          std::string name = cur.GetName ();
-          std::string fullpath = path;
-          fullpath.append ("/$");
-          fullpath.append (name);
-          NS_LOG_LOGIC("collect: " << fullpath);
-          current->GetTraceResolver ()->CollectSources (fullpath, context, collection);
-          cur = cur.GetParent ();
-        }
-      current = current->m_next;
-    }
-
-  m_collecting = false;
-}
-void 
-Object::DoTraceAll (std::ostream &os, const TraceContext &context) const
-{
-  const Object *current;
-  current = this;
-  do {
-    if (current->m_collecting)
-      {
-        return;
-      }
-    current = current->m_next;
-  } while (current != this);
-
-  m_collecting = true;
-
-  current = this->m_next;
-  while (current != this)
-    {
-      NS_ASSERT (current != 0);
-      current->GetTraceResolver ()->TraceAll (os, context);
-      current = current->m_next;
-    }
-
-  m_collecting = false;
-}
-
 } // namespace ns3
 
 
 #ifdef RUN_SELF_TESTS
 
 #include "test.h"
-#include "sv-trace-source.h"
-#include "composite-trace-resolver.h"
 
 namespace {
 
@@ -1439,18 +1287,7 @@
   }
   BaseA ()
   {}
-  void BaseGenerateTrace (int16_t v)
-  { m_source = v; }
   virtual void Dispose (void) {}
-  virtual ns3::Ptr<ns3::TraceResolver> GetTraceResolver (void) const
-  {
-    ns3::Ptr<ns3::CompositeTraceResolver> resolver = 
-      ns3::Create<ns3::CompositeTraceResolver> ();
-    resolver->AddSource ("basea-x", ns3::TraceDoc ("test source"), m_source);
-    resolver->SetParentResolver (Object::GetTraceResolver ());
-    return resolver;
-  }
-  ns3::SVTraceSource<int16_t> m_source;
 };
 
 class DerivedA : public BaseA
@@ -1464,20 +1301,9 @@
   }
   DerivedA ()
   {}
-  void DerivedGenerateTrace (int16_t v)
-  { m_sourceDerived = v; }
   virtual void Dispose (void) {
     BaseA::Dispose ();
   }
-  virtual ns3::Ptr<ns3::TraceResolver> GetTraceResolver (void) const
-  {
-    ns3::Ptr<ns3::CompositeTraceResolver> resolver = 
-      ns3::Create<ns3::CompositeTraceResolver> ();
-    resolver->AddSource ("deriveda-x", ns3::TraceDoc ("test source"), m_sourceDerived);
-    resolver->SetParentResolver (BaseA::GetTraceResolver ());
-    return resolver;
-  }
-  ns3::SVTraceSource<int16_t> m_sourceDerived;
 };
 
 class BaseB : public ns3::Object
@@ -1491,18 +1317,7 @@
   }
   BaseB ()
   {}
-  void BaseGenerateTrace (int16_t v)
-  { m_source = v; }
   virtual void Dispose (void) {}
-  virtual ns3::Ptr<ns3::TraceResolver> GetTraceResolver (void) const
-  {
-    ns3::Ptr<ns3::CompositeTraceResolver> resolver = 
-      ns3::Create<ns3::CompositeTraceResolver> ();
-    resolver->AddSource ("baseb-x", ns3::TraceDoc ("test source"), m_source);
-    resolver->SetParentResolver (Object::GetTraceResolver ());
-    return resolver;
-  }
-  ns3::SVTraceSource<int16_t> m_source;
 };
 
 class DerivedB : public BaseB
@@ -1516,20 +1331,9 @@
   }
   DerivedB ()
   {}
-  void DerivedGenerateTrace (int16_t v)
-  { m_sourceDerived = v; }
   virtual void Dispose (void) {
     BaseB::Dispose ();
   }
-  virtual ns3::Ptr<ns3::TraceResolver> GetTraceResolver (void) const
-  {
-    ns3::Ptr<ns3::CompositeTraceResolver> resolver = 
-      ns3::Create<ns3::CompositeTraceResolver> ();
-    resolver->AddSource ("derivedb-x", ns3::TraceDoc ("test source"), m_sourceDerived);
-    resolver->SetParentResolver (BaseB::GetTraceResolver ());
-    return resolver;
-  }
-  ns3::SVTraceSource<int16_t> m_sourceDerived;
 };
 
 NS_OBJECT_ENSURE_REGISTERED (BaseA);
@@ -1546,41 +1350,11 @@
 public:
   ObjectTest ();
   virtual bool RunTests (void);
-private:
-  void BaseATrace (const TraceContext &context, int64_t oldValue, int64_t newValue);
-  void DerivedATrace (const TraceContext &context, int64_t oldValue, int64_t newValue);
-  void BaseBTrace (const TraceContext &context, int64_t oldValue, int64_t newValue);
-  void DerivedBTrace (const TraceContext &context, int64_t oldValue, int64_t newValue);
-
-  bool m_baseATrace;
-  bool m_derivedATrace;
-  bool m_baseBTrace;
-  bool m_derivedBTrace;
 };
 
 ObjectTest::ObjectTest ()
   : Test ("Object")
 {}
-void 
-ObjectTest::BaseATrace (const TraceContext &context, int64_t oldValue, int64_t newValue)
-{
-  m_baseATrace = true;
-}
-void 
-ObjectTest::DerivedATrace (const TraceContext &context, int64_t oldValue, int64_t newValue)
-{
-  m_derivedATrace = true;
-}
-void 
-ObjectTest::BaseBTrace (const TraceContext &context, int64_t oldValue, int64_t newValue)
-{
-  m_baseBTrace = true;
-}
-void 
-ObjectTest::DerivedBTrace (const TraceContext &context, int64_t oldValue, int64_t newValue)
-{
-  m_derivedBTrace = true;
-}
 
 bool 
 ObjectTest::RunTests (void)
@@ -1629,74 +1403,6 @@
   baseA = 0;
   baseA = baseB->GetObject<BaseA> ();
 
-  baseA = CreateObject<BaseA> ();
-  baseA->TraceConnect ("/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-  m_baseATrace = false;
-  baseA->BaseGenerateTrace (1);
-  NS_TEST_ASSERT (m_baseATrace);
-  baseA->TraceDisconnect ("/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-
-  baseB = CreateObject<BaseB> ();
-  baseB->TraceConnect ("/baseb-x",  MakeCallback (&ObjectTest::BaseBTrace, this));
-  m_baseBTrace = false;
-  baseB->BaseGenerateTrace (2);
-  NS_TEST_ASSERT (m_baseBTrace);
-  baseB->TraceDisconnect ("/baseb-x",  MakeCallback (&ObjectTest::BaseBTrace, this));
-
-  baseA->AggregateObject (baseB);
-
-  baseA->TraceConnect ("/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-  m_baseATrace = false;
-  baseA->BaseGenerateTrace (3);
-  NS_TEST_ASSERT (m_baseATrace);
-  baseA->TraceDisconnect ("/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-
-  baseA->TraceConnect ("/$BaseB/baseb-x",  MakeCallback (&ObjectTest::BaseBTrace, this));
-  m_baseBTrace = false;
-  baseB->BaseGenerateTrace (4);
-  NS_TEST_ASSERT (m_baseBTrace);
-  baseA->TraceDisconnect ("/$BaseB/baseb-x",  MakeCallback (&ObjectTest::BaseBTrace, this));
-  m_baseBTrace = false;
-  baseB->BaseGenerateTrace (5);
-  NS_TEST_ASSERT (!m_baseBTrace);
-
-  baseB->TraceConnect ("/$BaseA/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-  m_baseATrace = false;
-  baseA->BaseGenerateTrace (6);
-  NS_TEST_ASSERT (m_baseATrace);
-  baseB->TraceDisconnect ("/$BaseA/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-
-  baseA->TraceConnect ("/$BaseA/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-  m_baseATrace = false;
-  baseA->BaseGenerateTrace (7);
-  NS_TEST_ASSERT (m_baseATrace);
-  baseA->TraceDisconnect ("/$BaseA/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-
-  Ptr<DerivedA> derivedA;
-  derivedA = CreateObject<DerivedA> ();
-  baseB = CreateObject<BaseB> ();
-  derivedA->AggregateObject (baseB);
-  baseB->TraceConnect ("/$DerivedA/deriveda-x", MakeCallback (&ObjectTest::DerivedATrace, this));
-  baseB->TraceConnect ("/$DerivedA/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-  m_derivedATrace = false;
-  m_baseATrace = false;
-  derivedA->DerivedGenerateTrace (8);
-  derivedA->BaseGenerateTrace (9);
-  NS_TEST_ASSERT (m_derivedATrace);
-  NS_TEST_ASSERT (m_baseATrace);
-  baseB->TraceDisconnect ("/$DerivedA/deriveda-x", MakeCallback (&ObjectTest::BaseATrace, this));
-  baseB->TraceDisconnect ("/$DerivedA/basea-x", MakeCallback (&ObjectTest::BaseATrace, this));
-
-  baseB->TraceConnect ("/$DerivedA/*", MakeCallback (&ObjectTest::DerivedATrace, this));
-  m_derivedATrace = false;
-  derivedA->DerivedGenerateTrace (10);
-  NS_TEST_ASSERT (m_derivedATrace);
-  // here, we have connected the derived trace sink to all 
-  // trace sources, including the base trace source.
-  m_derivedATrace = false;
-  derivedA->BaseGenerateTrace (11);
-  NS_TEST_ASSERT (m_derivedATrace);
-  baseB->TraceDisconnect ("/$DerivedA/*", MakeCallback (&ObjectTest::BaseATrace, this));
 
   // Test the object creation code of TypeId
   Ptr<Object> a = BaseA::GetTypeId ().CreateObject ();