--- a/src/common/packet-printer.cc Thu May 31 13:45:03 2007 +0200
+++ b/src/common/packet-printer.cc Thu May 31 13:52:29 2007 +0200
@@ -166,5 +166,22 @@
os << std::endl;
}
+void
+PacketPrinter::DoAddPrinter (uint32_t uid,
+ Ptr<CallbackImplBase> printer,
+ Callback<void,
+ std::ostream &,
+ uint32_t,
+ uint32_t,
+ std::string &,
+ struct PacketPrinter::FragmentInformation> fragmentPrinter)
+{
+ struct PacketPrinter::Printer p;
+ p.m_chunkUid = uid;
+ p.m_printer = printer;
+ p.m_fragmentPrinter = fragmentPrinter;
+ m_printerList.push_back (p);
+}
+
} // namespace ns3
--- a/src/common/packet-printer.h Thu May 31 13:45:03 2007 +0200
+++ b/src/common/packet-printer.h Thu May 31 13:52:29 2007 +0200
@@ -157,6 +157,14 @@
uint32_t fragmentEnd) const;
void PrintPayload (std::ostream &os, uint32_t packetUid, uint32_t size,
uint32_t fragmentStart, uint32_t fragmentEnd) const;
+ void DoAddPrinter (uint32_t uid,
+ Ptr<CallbackImplBase> printer,
+ Callback<void,
+ std::ostream &,
+ uint32_t,
+ uint32_t,
+ std::string &,
+ struct PacketPrinter::FragmentInformation> fragmentPrinter);
static PacketPrinter m_defaultPacketPrinter;
PrinterList m_printerList;
@@ -180,11 +188,7 @@
struct PacketPrinter::FragmentInformation> fragmentPrinter)
{
static uint32_t uid = PacketPrinter::GetUid<T> ();
- struct PacketPrinter::Printer p;
- p.m_chunkUid = uid;
- p.m_printer = printer.GetImpl ();
- p.m_fragmentPrinter = fragmentPrinter;
- m_printerList.push_back (p);
+ DoAddPrinter (uid, printer.GetImpl (), fragmentPrinter);
}
template <typename T>
@@ -225,9 +229,11 @@
RegisteredChunks *chunks = PacketPrinter::GetRegisteredChunks ();
chunks->push_back (std::make_pair(&PacketPrinter::DoPrint<T>,
&PacketPrinter::DoGetName<T>));
- PacketPrinter::PeekDefault ()->AddPrinter (MakeCallback (&PacketPrinter::DoDefaultPrint<T>),
- MakeCallback (&PacketPrinter::DoDefaultPrintFragment));
- return chunks->size ();
+ uint32_t uid = chunks->size ();
+ PacketPrinter::PeekDefault ()->DoAddPrinter (uid,
+ MakeCallback (&PacketPrinter::DoDefaultPrint<T>).GetImpl (),
+ MakeCallback (&PacketPrinter::DoDefaultPrintFragment));
+ return uid;
}
template <typename T>