replace CallbackTraceSourceBase with TraceSource base class

This commit is contained in:
Mathieu Lacage
2007-08-12 22:23:08 +02:00
parent fcfdb18914
commit 22fec82616
8 changed files with 67 additions and 37 deletions

View File

@@ -26,18 +26,10 @@
#include "callback.h"
#include "fatal-error.h"
#include "trace-context.h"
#include "trace-source.h"
namespace ns3 {
class CallbackTraceSourceBase
{
public:
virtual ~CallbackTraceSourceBase () {}
virtual void AddCallback (CallbackBase const & callback, TraceContext const & context) = 0;
virtual void RemoveCallback (CallbackBase const & callback) = 0;
};
/**
* \brief log arbitrary number of parameters to a matching ns3::Callback
* \ingroup lowleveltracing
@@ -47,7 +39,7 @@ public:
*/
template<typename T1 = empty, typename T2 = empty,
typename T3 = empty, typename T4 = empty>
class CallbackTraceSource : public CallbackTraceSourceBase {
class CallbackTraceSource : public TraceSource {
public:
CallbackTraceSource ();
virtual void AddCallback (CallbackBase const & callback, TraceContext const & context);

View File

@@ -63,6 +63,14 @@ CompositeTraceResolver::Add (std::string name,
AddItem (item);
}
void
CompositeTraceResolver::Add (std::string name,
TraceSource &trace)
{
DoAddSource (name, trace, TraceContext ());
}
void
CompositeTraceResolver::Add (std::string name,
FVTraceSourceBase &trace)
@@ -149,11 +157,11 @@ CompositeTraceResolver::DoAddSV (std::string name,
}
void
CompositeTraceResolver::DoAddCallback (std::string name,
CallbackTraceSourceBase &trace,
const TraceContext &context)
CompositeTraceResolver::DoAddSource (std::string name,
TraceSource &trace,
const TraceContext &context)
{
class CallbackCompositeItem : public CompositeItem
class SourceCompositeItem : public CompositeItem
{
public:
virtual void Connect (std::string subpath, const CallbackBase &cb, const TraceContext &context)
@@ -161,8 +169,8 @@ CompositeTraceResolver::DoAddCallback (std::string name,
virtual void Disconnect (std::string subpath, const CallbackBase &cb)
{if (subpath == "") {trace->RemoveCallback (cb);}}
CallbackTraceSourceBase *trace;
} *item = new CallbackCompositeItem ();
TraceSource *trace;
} *item = new SourceCompositeItem ();
item->name = name;
item->context = context;
item->trace = &trace;

View File

@@ -54,7 +54,7 @@ public:
*/
template <typename T>
void Add (std::string name,
CallbackTraceSourceBase &trace, T const &context);
TraceSource &trace, T const &context);
/**
* \param name name of trace source
* \param trace a signed variable trace source
@@ -102,10 +102,8 @@ public:
* source will match the name specified during namespace
* resolution.
*/
template <typename T1, typename T2,
typename T3, typename T4>
void Add (std::string name,
CallbackTraceSource<T1,T2,T3,T4> &trace);
TraceSource &trace);
/**
* \param name name of trace source
* \param trace a signed variable trace source
@@ -195,9 +193,9 @@ private:
const TraceContext &context,
enum Operation op);
void DoAddChild (std::string name, Ptr<Object> child, const TraceContext &context);
void DoAddCallback (std::string name,
CallbackTraceSourceBase &trace,
const TraceContext &context);
void DoAddSource (std::string name,
TraceSource &trace,
const TraceContext &context);
void DoAddSV (std::string name,
SVTraceSourceBase &trace,
const TraceContext &context);
@@ -222,20 +220,12 @@ namespace ns3 {
template <typename T>
void
CompositeTraceResolver::Add (std::string name,
CallbackTraceSourceBase &trace,
TraceSource &trace,
T const &context)
{
TraceContext ctx;
ctx.Add (context);
DoAddCallback (name, trace, ctx);
}
template <typename T1, typename T2,
typename T3, typename T4>
void
CompositeTraceResolver::Add (std::string name,
CallbackTraceSource<T1,T2,T3,T4> &trace)
{
DoAddCallback (name, trace, TraceContext ());
DoAddSource (name, trace, ctx);
}
template <typename T>

View File

@@ -23,11 +23,12 @@
#define F_VARIABLE_TRACER_H
#include "callback-trace-source.h"
#include "trace-source.h"
#include <stdint.h>
namespace ns3 {
class FVTraceSourceBase {
class FVTraceSourceBase : public TraceSource {
public:
typedef CallbackTraceSource<double, double> ChangeNotifyCallback;

View File

@@ -23,11 +23,12 @@
#define SV_TRACE_SOURCE_H
#include "callback-trace-source.h"
#include "trace-source.h"
#include <stdint.h>
namespace ns3 {
class SVTraceSourceBase {
class SVTraceSourceBase : public TraceSource {
public:
typedef CallbackTraceSource<int64_t, int64_t> ChangeNotifyCallback;
@@ -37,7 +38,7 @@ public:
return *this;
}
~SVTraceSourceBase () {}
virtual ~SVTraceSourceBase () {}
void AddCallback (CallbackBase const & callback, TraceContext const & context) {
m_callback.AddCallback (callback, context);

36
src/core/trace-source.h Normal file
View File

@@ -0,0 +1,36 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2007 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 TRACE_SOURCE_H
#define TRACE_SOURCE_H
namespace ns3 {
class TraceSource
{
public:
virtual ~TraceSource () {}
virtual void AddCallback (CallbackBase const & callback, TraceContext const & context) = 0;
virtual void RemoveCallback (CallbackBase const & callback) = 0;
};
} // namespace ns3
#endif /* TRACE_SOURCE_H */

View File

@@ -23,11 +23,12 @@
#define UV_TRACE_SOURCE_H
#include "callback-trace-source.h"
#include "trace-source.h"
#include <stdint.h>
namespace ns3 {
class UVTraceSourceBase {
class UVTraceSourceBase : public TraceSource {
public:
typedef CallbackTraceSource<uint64_t, uint64_t> ChangeNotifyCallback;

View File

@@ -81,6 +81,7 @@ def build(bld):
'component-manager.h',
'type-traits.h',
'random-variable-default-value.h',
'trace-source.h',
'uv-trace-source.h',
'sv-trace-source.h',
'fv-trace-source.h',