keep track of trace source help strings

This commit is contained in:
Mathieu Lacage
2007-08-28 11:01:00 +02:00
parent 65f12f1df5
commit 8acd0300cd
9 changed files with 46 additions and 33 deletions

View File

@@ -73,13 +73,15 @@ CompositeTraceResolver::Add (std::string name,
void
CompositeTraceResolver::AddSource (std::string name,
TraceSource &trace)
std::string helpText,
TraceSource &trace)
{
DoAddSource (name, trace, TraceContext ());
DoAddSource (name, helpText, trace, TraceContext ());
}
void
CompositeTraceResolver::DoAddSource (std::string name,
std::string helpText,
TraceSource &trace,
const TraceContext &context)
{
@@ -98,13 +100,15 @@ CompositeTraceResolver::DoAddSource (std::string name,
TraceContext ctx = context;
ctx.Union (this->context);
// XXX help string
collection->AddUnique (path, ctx, "");
collection->AddUnique (path, ctx, helpText);
}
TraceSource *trace;
std::string helpText;
} *item = new SourceCompositeItem ();
item->name = name;
item->context = context;
item->trace = &trace;
item->helpText = helpText;
AddItem (item);
}
@@ -397,7 +401,7 @@ Ptr<TraceResolver>
CompositeTraceResolverTest::CreateSubResolver (void)
{
Ptr<CompositeTraceResolver> subresolver = Create<CompositeTraceResolver> ();
subresolver->AddSource ("trace-int", m_traceInt,
subresolver->AddSource ("trace-int", "test source", m_traceInt,
SubTraceSourceTest (SubTraceSourceTest::INT));
return subresolver;
}
@@ -412,9 +416,9 @@ CompositeTraceResolverTest::RunTests (void)
CompositeTraceResolver resolver;
resolver.AddSource ("trace-double-a", traceDoubleA,
resolver.AddSource ("trace-double-a", "test source", traceDoubleA,
TraceSourceTest (TraceSourceTest::DOUBLEA));
resolver.AddSource ("trace-double-b", traceDoubleB,
resolver.AddSource ("trace-double-b", "test source", traceDoubleB,
TraceSourceTest (TraceSourceTest::DOUBLEB));
resolver.Connect ("/*", MakeCallback (&CompositeTraceResolverTest::TraceDouble, this), TraceContext ());
@@ -547,7 +551,7 @@ CompositeTraceResolverTest::RunTests (void)
SVTraceSource<uint16_t> source;
resolver.AddSource ("uint16_t", source, TraceSourceTest (TraceSourceTest::UINT16_T));
resolver.AddSource ("uint16_t", "test source", source, TraceSourceTest (TraceSourceTest::UINT16_T));
return ok;

View File

@@ -53,7 +53,7 @@ public:
* be automatically extended to contain the input context.
*/
template <typename T>
void AddSource (std::string name,
void AddSource (std::string name, std::string helpText,
TraceSource &trace, T const &context);
/**
* \param name name of trace source
@@ -64,18 +64,8 @@ public:
* resolution.
*/
void AddSource (std::string name,
std::string helpText,
TraceSource &trace);
/**
* \param name name of child trace resolver
* \param createResolver a trace resolver constructor
*
* Add a child trace resolver to this resolver. This child
* trace resolver will match the name specified during
* namespace resolution. When this happens, the constructor
* will be invoked to create the child trace resolver.
*/
void Add (std::string name,
Callback<Ptr<TraceResolver> > createResolver);
void AddChild (std::string name, Ptr<Object> child);
@@ -95,6 +85,7 @@ public:
SourceCollection *collection);
private:
friend class CompositeTraceResolverTest;
class CompositeItem
{
public:
@@ -123,8 +114,12 @@ private:
const Operation &operation);
void DoAddChild (std::string name, Ptr<Object> child, const TraceContext &context);
void DoAddSource (std::string name,
std::string helpText,
TraceSource &trace,
const TraceContext &context);
void Add (std::string name,
Callback<Ptr<TraceResolver> > createResolver);
CompositeTraceResolver::TraceItems m_items;
Ptr<TraceResolver> m_parent;
@@ -139,12 +134,13 @@ namespace ns3 {
template <typename T>
void
CompositeTraceResolver::AddSource (std::string name,
std::string helpText,
TraceSource &trace,
T const &context)
{
TraceContext ctx;
ctx.AddElement (context);
DoAddSource (name, trace, ctx);
DoAddSource (name, helpText, trace, ctx);
}
template <typename ITERATOR, typename INDEX>

View File

@@ -346,7 +346,7 @@ public:
{
ns3::Ptr<ns3::CompositeTraceResolver> resolver =
ns3::Create<ns3::CompositeTraceResolver> ();
resolver->AddSource ("basea-x", m_source);
resolver->AddSource ("basea-x", "test source", m_source);
resolver->SetParent (Object::GetTraceResolver ());
return resolver;
}
@@ -370,7 +370,7 @@ public:
{
ns3::Ptr<ns3::CompositeTraceResolver> resolver =
ns3::Create<ns3::CompositeTraceResolver> ();
resolver->AddSource ("deriveda-x", m_sourceDerived);
resolver->AddSource ("deriveda-x", "test source", m_sourceDerived);
resolver->SetParent (BaseA::GetTraceResolver ());
return resolver;
}
@@ -397,7 +397,7 @@ public:
{
ns3::Ptr<ns3::CompositeTraceResolver> resolver =
ns3::Create<ns3::CompositeTraceResolver> ();
resolver->AddSource ("baseb-x", m_source);
resolver->AddSource ("baseb-x", "test source", m_source);
resolver->SetParent (Object::GetTraceResolver ());
return resolver;
}
@@ -421,7 +421,7 @@ public:
{
ns3::Ptr<ns3::CompositeTraceResolver> resolver =
ns3::Create<ns3::CompositeTraceResolver> ();
resolver->AddSource ("derivedb-x", m_sourceDerived);
resolver->AddSource ("derivedb-x", "test source", m_sourceDerived);
resolver->SetParent (BaseB::GetTraceResolver ());
return resolver;
}

View File

@@ -99,9 +99,12 @@ TraceResolver::SourceCollection::Print (std::ostream &os) const
{
for (SourceVector::const_iterator i = m_sources.begin (); i != m_sources.end (); i++)
{
os << i->path << " [";
os << "source=" << i->path << std::endl;
os << "TraceContextElement=";
i->context.PrintAvailable (os, " ");
os << "] " << i->help << std::endl;
os << std::endl;
os << i->help << std::endl;
os << std::endl;
}
}

View File

@@ -460,9 +460,11 @@ CsmaCdNetDevice::GetTraceResolver (void)
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddChild ("queue", m_queue);
resolver->AddSource ("rx",
"receive MAC packet",
m_rxTrace,
CsmaCdTraceType (CsmaCdTraceType::RX));
resolver->AddSource ("drop",
"drop MAC packet",
m_dropTrace,
CsmaCdTraceType (CsmaCdTraceType::DROP));
resolver->SetParent (NetDevice::GetTraceResolver ());

View File

@@ -199,6 +199,7 @@ PointToPointNetDevice::GetTraceResolver (void)
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddChild ("queue", m_queue);
resolver->AddSource ("rx",
"receive MAC packet",
m_rxTrace,
PointToPointTraceType ());
resolver->SetParent (NetDevice::GetTraceResolver ());

View File

@@ -162,9 +162,12 @@ Ptr<TraceResolver>
Ipv4L3Protocol::GetTraceResolver (void)
{
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddSource ("tx", m_txTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::TX));
resolver->AddSource ("rx", m_rxTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::RX));
resolver->AddSource ("drop", m_dropTrace, Ipv4L3ProtocolTraceContextElement (Ipv4L3ProtocolTraceContextElement::DROP));
resolver->AddSource ("tx", "send ipv4 packet to outgoing interface",
m_txTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::TX));
resolver->AddSource ("rx", "receive ipv4 packet from incoming interface",
m_rxTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::RX));
resolver->AddSource ("drop", "drop ipv4 packet",
m_dropTrace, Ipv4L3ProtocolTraceContextElement (Ipv4L3ProtocolTraceContextElement::DROP));
resolver->AddArray ("interfaces",
m_interfaces.begin (), m_interfaces.end (),
Ipv4L3ProtocolInterfaceIndex ());

View File

@@ -44,7 +44,8 @@ MobilityModelNotifier::GetTraceResolver (void)
{
Ptr<CompositeTraceResolver> resolver =
Create<CompositeTraceResolver> ();
resolver->AddSource ("course-change", m_trace);
resolver->AddSource ("course-change", "speed vector changed value",
m_trace);
return resolver;
}

View File

@@ -103,9 +103,12 @@ Ptr<TraceResolver>
Queue::GetTraceResolver (void)
{
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddSource ("enqueue", m_traceEnqueue, QueueTraceType (QueueTraceType::ENQUEUE));
resolver->AddSource ("dequeue", m_traceDequeue, QueueTraceType (QueueTraceType::DEQUEUE));
resolver->AddSource ("drop", m_traceDrop, QueueTraceType (QueueTraceType::DROP));
resolver->AddSource ("enqueue", "store packet in queue",
m_traceEnqueue, QueueTraceType (QueueTraceType::ENQUEUE));
resolver->AddSource ("dequeue", "remove packet from queue",
m_traceDequeue, QueueTraceType (QueueTraceType::DEQUEUE));
resolver->AddSource ("drop", "drop packet from queue",
m_traceDrop, QueueTraceType (QueueTraceType::DROP));
resolver->SetParent (Object::GetTraceResolver ());
return resolver;
}