document trace source signatures

This commit is contained in:
Mathieu Lacage
2007-08-28 13:10:18 +02:00
parent 0b0a187967
commit a5cf22af80
12 changed files with 78 additions and 41 deletions

View File

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

View File

@@ -30,6 +30,7 @@
#include "sv-trace-source.h"
#include "fv-trace-source.h"
#include "array-trace-resolver.h"
#include "trace-doc.h"
namespace ns3 {
@@ -53,7 +54,7 @@ public:
* be automatically extended to contain the input context.
*/
template <typename T>
void AddSource (std::string name, std::string helpText,
void AddSource (std::string name, const TraceDoc &doc,
TraceSource &trace, T const &context);
/**
* \param name name of trace source
@@ -64,7 +65,7 @@ public:
* resolution.
*/
void AddSource (std::string name,
std::string helpText,
const TraceDoc &doc,
TraceSource &trace);
void AddChild (std::string name, Ptr<Object> child);
@@ -114,7 +115,7 @@ private:
const Operation &operation);
void DoAddChild (std::string name, Ptr<Object> child, const TraceContext &context);
void DoAddSource (std::string name,
std::string helpText,
const TraceDoc &doc,
TraceSource &trace,
const TraceContext &context);
void Add (std::string name,
@@ -134,13 +135,13 @@ namespace ns3 {
template <typename T>
void
CompositeTraceResolver::AddSource (std::string name,
std::string helpText,
const TraceDoc &doc,
TraceSource &trace,
T const &context)
{
TraceContext ctx;
ctx.AddElement (context);
DoAddSource (name, helpText, trace, ctx);
DoAddSource (name, doc, trace, ctx);
}
template <typename ITERATOR, typename INDEX>

View File

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

View File

@@ -2,6 +2,10 @@
namespace ns3 {
TraceDoc::TraceDoc ()
: m_help ("empty help")
{}
TraceDoc::TraceDoc (std::string help)
: m_help (help)
{}
@@ -17,6 +21,7 @@ TraceDoc::TraceDoc (std::string help,
std::string arg0Help,
std::string arg1Type,
std::string arg1Help)
: m_help (help)
{
m_argVector.push_back (std::make_pair (arg0Type, arg0Help));
m_argVector.push_back (std::make_pair (arg1Type, arg1Help));
@@ -28,6 +33,7 @@ TraceDoc::TraceDoc (std::string help,
std::string arg1Help,
std::string arg2Type,
std::string arg2Help)
: m_help (help)
{
m_argVector.push_back (std::make_pair (arg0Type, arg0Help));
m_argVector.push_back (std::make_pair (arg1Type, arg1Help));
@@ -42,6 +48,7 @@ TraceDoc::TraceDoc (std::string help,
std::string arg2Help,
std::string arg3Type,
std::string arg3Help)
: m_help (help)
{
m_argVector.push_back (std::make_pair (arg0Type, arg0Help));
m_argVector.push_back (std::make_pair (arg1Type, arg1Help));
@@ -49,7 +56,7 @@ TraceDoc::TraceDoc (std::string help,
m_argVector.push_back (std::make_pair (arg3Type, arg3Help));
}
std::string
TraceDoc::GetHelp (void)
TraceDoc::GetHelp (void) const
{
return m_help;
}

View File

@@ -11,7 +11,7 @@ class TraceDoc
typedef std::vector<std::pair<std::string,std::string> > ArgVector;
public:
typedef ArgVector::const_iterator Iterator;
TraceDoc ();
TraceDoc (std::string help);
TraceDoc (std::string help,
std::string arg0Type,
@@ -37,7 +37,7 @@ public:
std::string arg2Help,
std::string arg3Type,
std::string arg3Help);
std::string GetHelp (void);
std::string GetHelp (void) const;
Iterator ArgsBegin (void) const;
Iterator ArgsEnd (void) const;
private:

View File

@@ -76,13 +76,13 @@ TraceResolver::GetSubpath (std::string path)
}
void
TraceResolver::SourceCollection::AddUnique (std::string path, const TraceContext &context,
std::string help)
TraceResolver::SourceCollection::AddUnique (std::string path,
const TraceContext &context,
const TraceDoc &doc)
{
for (SourceVector::const_iterator i = m_sources.begin (); i != m_sources.end (); i++)
{
if (i->path == path &&
i->help == help &&
context.IsSimilar (i->context))
{
return;
@@ -91,7 +91,7 @@ TraceResolver::SourceCollection::AddUnique (std::string path, const TraceContext
struct Source source;
source.path = path;
source.context = context;
source.help = help;
source.doc = doc;
m_sources.push_back (source);
}
void
@@ -103,7 +103,14 @@ TraceResolver::SourceCollection::Print (std::ostream &os) const
os << "TraceContext=[";
i->context.PrintAvailable (os, ",");
os << "]" << std::endl;
os << "help=\"" << i->help << "\"" << std::endl;
os << "help=\"" << i->doc.GetHelp () << "\"" << std::endl;
os << "const TraceContext &: the trace context associated to the connected trace source." << std::endl;
uint32_t k = 0;
for (TraceDoc::Iterator j = i->doc.ArgsBegin (); j != i->doc.ArgsEnd (); j++)
{
os << "argument " << k << " -- " << j->first << ": " << j->second << "." << std::endl;
k++;
}
os << std::endl;
}
}

View File

@@ -24,6 +24,7 @@
#include <string>
#include <list>
#include "trace-context.h"
#include "trace-doc.h"
namespace ns3 {
@@ -74,14 +75,15 @@ public:
{
public:
void Print (std::ostream &os) const;
void AddUnique (std::string path, const TraceContext &context,
std::string help);
void AddUnique (std::string path,
const TraceContext &context,
const TraceDoc &doc);
private:
struct Source
{
std::string path;
TraceContext context;
std::string help;
TraceDoc doc;
};
typedef std::vector<struct Source> SourceVector;
SourceVector m_sources;

View File

@@ -463,11 +463,13 @@ CsmaNetDevice::GetTraceResolver (void)
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddChild ("queue", m_queue);
resolver->AddSource ("rx",
"receive MAC packet",
TraceDoc ("receive MAC packet",
"const Packet &", "packet received"),
m_rxTrace,
CsmaTraceType (CsmaTraceType::RX));
resolver->AddSource ("drop",
"drop MAC packet",
TraceDoc ("drop MAC packet",
"const Packet &", "packet dropped"),
m_dropTrace,
CsmaTraceType (CsmaTraceType::DROP));
resolver->SetParent (NetDevice::GetTraceResolver ());

View File

@@ -200,7 +200,8 @@ PointToPointNetDevice::GetTraceResolver (void)
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddChild ("queue", m_queue);
resolver->AddSource ("rx",
"receive MAC packet",
TraceDoc ("receive MAC packet",
"const Packet &", "packet received"),
m_rxTrace,
PointToPointTraceType ());
resolver->SetParent (NetDevice::GetTraceResolver ());

View File

@@ -162,11 +162,19 @@ Ptr<TraceResolver>
Ipv4L3Protocol::GetTraceResolver (void)
{
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddSource ("tx", "send ipv4 packet to outgoing interface",
resolver->AddSource ("tx",
TraceDoc ("send ipv4 packet to outgoing interface",
"const Packet &", "packet sent",
"uint32_t", "index of output ipv4 interface"),
m_txTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::TX));
resolver->AddSource ("rx", "receive ipv4 packet from incoming interface",
resolver->AddSource ("rx",
TraceDoc ("receive ipv4 packet from incoming interface",
"const Packet &", "packet received",
"uint32_t", "index of input ipv4 interface"),
m_rxTrace, Ipv4L3ProtocolTraceContextElement(Ipv4L3ProtocolTraceContextElement::RX));
resolver->AddSource ("drop", "drop ipv4 packet",
resolver->AddSource ("drop",
TraceDoc ("drop ipv4 packet",
"const Packet &", "packet dropped"),
m_dropTrace, Ipv4L3ProtocolTraceContextElement (Ipv4L3ProtocolTraceContextElement::DROP));
resolver->AddArray ("interfaces",
m_interfaces.begin (), m_interfaces.end (),

View File

@@ -20,6 +20,7 @@
*/
#include "mobility-model-notifier.h"
#include "ns3/composite-trace-resolver.h"
#include "ns3/trace-doc.h"
namespace ns3 {
@@ -44,7 +45,10 @@ MobilityModelNotifier::GetTraceResolver (void)
{
Ptr<CompositeTraceResolver> resolver =
Create<CompositeTraceResolver> ();
resolver->AddSource ("course-change", "speed vector changed value",
resolver->AddSource ("course-change",
TraceDoc ("The value of the speed vector changed",
"Ptr<const MobilityModel>",
"the mobility model whose course changed"),
m_trace);
resolver->SetParent (Object::GetTraceResolver ());
return resolver;

View File

@@ -103,11 +103,17 @@ Ptr<TraceResolver>
Queue::GetTraceResolver (void)
{
Ptr<CompositeTraceResolver> resolver = Create<CompositeTraceResolver> ();
resolver->AddSource ("enqueue", "store packet in queue",
resolver->AddSource ("enqueue",
TraceDoc ("store packet in queue",
"const Packet &", "packet queued"),
m_traceEnqueue, QueueTraceType (QueueTraceType::ENQUEUE));
resolver->AddSource ("dequeue", "remove packet from queue",
resolver->AddSource ("dequeue",
TraceDoc ("remove packet from queue",
"const Packet &", "packet dequeued"),
m_traceDequeue, QueueTraceType (QueueTraceType::DEQUEUE));
resolver->AddSource ("drop", "drop packet from queue",
resolver->AddSource ("drop",
TraceDoc ("drop packet from queue",
"const Packet &", "packet dropped"),
m_traceDrop, QueueTraceType (QueueTraceType::DROP));
resolver->SetParent (Object::GetTraceResolver ());
return resolver;