remove packet logger. replace it with more generic callback logger
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 04 Sep 2006 13:40:02 +0200
changeset 40 90845b5a0049
parent 39 fc6ce16b47e1
child 41 d9a2d111bac9
remove packet logger. replace it with more generic callback logger
samples/main-trace.cc
src/common/packet-logger.cc
src/common/packet-logger.h
src/common/trace-container.cc
src/common/trace-container.h
--- a/samples/main-trace.cc	Mon Sep 04 13:19:07 2006 +0200
+++ b/samples/main-trace.cc	Mon Sep 04 13:40:02 2006 +0200
@@ -1,14 +1,14 @@
 /* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
 #include "ns3/trace-container.h"
 #include "ns3/ui-traced-variable.tcc"
-#include "ns3/packet-logger.h"
 #include "ns3/trace-stream.h"
 #include "ns3/pcap-writer.h"
+#include "ns3/packet.h"
 #include <iostream>
 
 using namespace ns3;
 
-PacketLogger a;
+CallbackLogger<Packet> a;
 UiTracedVariable<unsigned short> b;
 TraceStream c;
 CallbackLogger<double, int> d;
@@ -16,7 +16,7 @@
 void
 register_all_trace_sources (TraceContainer *container)
 {
-	container->register_packet_logger ("source-a", &a);
+	container->register_callback ("source-a", &a);
 	container->register_ui_variable ("source-b", &b);
 	container->register_stream ("source-c", &c);
 	container->register_callback ("source-d", &d);
@@ -25,7 +25,7 @@
 generate_trace_events (void)
 {
 	// log en empty packet
-	a.log (Packet ());
+	a (Packet ());
 	b = 10;
 	b += 100;
 	b += 50;
@@ -50,8 +50,8 @@
 	PcapWriter pcap;
 	pcap.open ("trace-test.log");
 	pcap.write_header_ethernet ();
-	traces.set_packet_logger_callback ("source-a", 
-					   make_callback (&PcapWriter::write_packet, &pcap));
+	traces.set_callback ("source-a", 
+			     make_callback (&PcapWriter::write_packet, &pcap));
 	traces.set_ui_variable_callback ("source-b", make_callback (&variable_event));
 	traces.set_stream ("source-c", &std::cout);
 	traces.set_callback ("source-d", make_callback (&callback_event));
--- a/src/common/packet-logger.cc	Mon Sep 04 13:19:07 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#include "packet-logger.h"
-
-namespace ns3 {
-
-PacketLogger::PacketLogger ()
-{}
-void 
-PacketLogger::log (Packet const packet)
-{
-	if (!m_callback.is_null ()) {
-		m_callback (packet);
-	}
-}
-void 
-PacketLogger::set_callback (PacketLoggerCallback callback)
-{
-	m_callback = callback;
-}
-
-}; // namespace ns3
-
--- a/src/common/packet-logger.h	Mon Sep 04 13:19:07 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#ifndef PACKET_LOGGER_H
-#define PACKET_LOGGER_H
-
-#include "ns3/callback.h"
-#include "packet.h"
-
-namespace ns3 {
-
-/**
- * \brief log packets
- */
-class PacketLogger {
-public:
-	typedef Callback<void,Packet const> PacketLoggerCallback;
-	PacketLogger ();
-	/**
-	 * \param packet to log
-	 * If a non-null callback was set, the packet
-	 * is forwarded to that callback.
-	 */
-	void log (Packet const packet);
-	/**
-	 * \param callback callback to store
-	 */
-	void set_callback (PacketLoggerCallback callback);
-private:
-	PacketLoggerCallback m_callback;
-};
-
-}; // namespace ns3
-
-#endif /* PACKET_LOGGER_H */
--- a/src/common/trace-container.cc	Mon Sep 04 13:19:07 2006 +0200
+++ b/src/common/trace-container.cc	Mon Sep 04 13:40:02 2006 +0200
@@ -20,7 +20,6 @@
  */
 
 #include "trace-container.h"
-#include "packet-logger.h"
 #include "trace-stream.h"
 #include <utility>
 #include <cassert>
@@ -64,17 +63,6 @@
 	assert (false);
 }
 void 
-TraceContainer::set_packet_logger_callback (char const *name, Callback<void,Packet const> callback)
-{
-	for (PacketLoggerListI i = m_packet_logger_list.begin (); i != m_packet_logger_list.end (); i++) {
-		if ((*i).second == name) {
-			(*i).first->set_callback (callback);
-			return;
-		}
-	}
-	assert (false);	
-}
-void 
 TraceContainer::set_stream (char const *name, std::ostream *os)
 {
 	for (TraceStreamListI i = m_trace_stream_list.begin (); i != m_trace_stream_list.end (); i++) {
@@ -117,19 +105,6 @@
 }
 
 void 
-TraceContainer::register_packet_logger (char const *name, PacketLogger *logger)
-{
-	// ensure unicity
-	for (PacketLoggerListI i = m_packet_logger_list.begin (); i != m_packet_logger_list.end (); i++) {
-		if (i->second == name) {
-			m_packet_logger_list.erase (i);
-			break;
-		}
-	}
-	m_packet_logger_list.push_back (std::make_pair (logger, name));
-}
-
-void 
 TraceContainer::register_stream (char const *name, TraceStream *stream)
 {
 	// ensure unicity
@@ -182,12 +157,6 @@
 			std::cout << "    \"" << (*i).second << "\""<<std::endl;
 		}
 	}
-	if (!m_packet_logger_list.empty ()) {		
-		std::cout << "packet logger: " << std::endl;
-		for (PacketLoggerListI i = m_packet_logger_list.begin (); i != m_packet_logger_list.end (); i++) {
-			std::cout << "    \"" << (*i).second << "\""<<std::endl;
-		}
-	}
 	if (!m_callback_list.empty ()) {
 		std::cout << "callback list: "<<std::endl;
 		for (CallbackListI i = m_callback_list.begin (); i != m_callback_list.end (); i++) {
--- a/src/common/trace-container.h	Mon Sep 04 13:19:07 2006 +0200
+++ b/src/common/trace-container.h	Mon Sep 04 13:40:02 2006 +0200
@@ -27,13 +27,11 @@
 #include "f-traced-variable.tcc"
 #include "callback-logger.h"
 #include "ns3/callback.h"
-#include "packet.h"
 #include <list>
 #include <string>
 
 namespace ns3 {
 
-class PacketLogger;
 class TraceStream;
 
 /**
@@ -45,9 +43,8 @@
  * model trace event sources.
  *
  * TraceContainer can be used to register the following event sources:
- *   - ns3::PacketLogger : can be connected to ns3::PcapWriter
  *   - ns3::TraceStream : can be connected to any std::ostream
- *   - ns3::CallbackLogger: can be connected to ns3::Callback
+ *   - ns3::CallbackLogger: can be connected to any ns3::Callback
  *   - ns3::UiTracedVariable
  *   - ns3::SiTracedVariable
  *   - ns3::FTracedVariable
@@ -90,13 +87,6 @@
 	void set_f_variable_callback (char const *name, Callback<void,double, double> callback);
 	/**
 	 * \param name the name of the target event source
-	 * \param callback the callback being connected to the target event source
-	 *
-	 * This method targets only event sources which are of type PacketLogger.
-	 */
-	void set_packet_logger_callback (char const *name, Callback<void,Packet const> callback);
-	/**
-	 * \param name the name of the target event source
 	 * \param os the output stream being connected to the source trace stream
 	 *
 	 * This method targets only event sources which are of type TraceStream.
@@ -167,13 +157,6 @@
 	void register_f_variable (char const *name, FTracedVariableBase *var);
 	/**
 	 * \param name the name of the registered event source
-	 * \param logger the event source being registered
-	 *
-	 * This method registers only event sources of type PacketLogger.
-	 */
-	void register_packet_logger (char const *name, PacketLogger *logger);
-	/**
-	 * \param name the name of the registered event source
 	 * \param stream the event source being registered
 	 *
 	 * This method registers only event sources of type TraceStream.
@@ -199,8 +182,6 @@
 	typedef std::list<std::pair<SiTracedVariableBase *, std::string> >::iterator SiListI;
 	typedef std::list<std::pair<FTracedVariableBase *, std::string> > FList;
 	typedef std::list<std::pair<FTracedVariableBase *, std::string> >::iterator FListI;
-	typedef std::list<std::pair<PacketLogger *, std::string> > PacketLoggerList;
-	typedef std::list<std::pair<PacketLogger *, std::string> >::iterator PacketLoggerListI;
 	typedef std::list<std::pair<TraceStream *, std::string> > TraceStreamList;
 	typedef std::list<std::pair<TraceStream *, std::string> >::iterator TraceStreamListI;
 	typedef std::list<std::pair<CallbackLoggerBase *, std::string> > CallbackList;
@@ -209,7 +190,6 @@
 	UiList m_ui_list;
 	SiList m_si_list;
 	FList m_f_list;
-	PacketLoggerList m_packet_logger_list;
 	TraceStreamList m_trace_stream_list;
 	CallbackList m_callback_list;
 };