src/core/trace-source-accessor.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 17 Mar 2008 05:22:29 +0100
changeset 2637 ac94e4889027
parent 2634 44a92f1d3728
child 2648 736213ce179d
permissions -rw-r--r--
move attribute code to ObjectBase.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2587
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     2
/*
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     3
 * Copyright (c) 2008 INRIA
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     4
 *
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     7
 * published by the Free Software Foundation;
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     8
 *
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    12
 * GNU General Public License for more details.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    13
 *
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    14
 * You should have received a copy of the GNU General Public License
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    15
 * along with this program; if not, write to the Free Software
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    17
 *
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    18
 * Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    19
 */
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#ifndef TRACE_SOURCE_ACCESSOR_H
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#define TRACE_SOURCE_ACCESSOR_H
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include <stdint.h>
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "callback.h"
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "ptr.h"
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
namespace ns3 {
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
2634
44a92f1d3728 introduce ObjectBase::GetInstanceTypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2594
diff changeset
    29
class ObjectBase;
44a92f1d3728 introduce ObjectBase::GetInstanceTypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2594
diff changeset
    30
2587
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    31
/**
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    32
 * \brief control access to objects' trace sources
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    33
 *
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    34
 * This class abstracts the kind of trace source to which we want to connect.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    35
 */
2634
44a92f1d3728 introduce ObjectBase::GetInstanceTypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2594
diff changeset
    36
class TraceSourceAccessor
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
{
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
public:
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  TraceSourceAccessor ();
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  virtual ~TraceSourceAccessor ();
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  void Ref (void) const;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  void Unref (void) const;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
2587
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    44
  /**
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    45
   * \param obj the object instance which contains the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    46
   * \param cb the callback to connect to the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    47
   */
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
    48
  virtual bool ConnectWithoutContext (ObjectBase *obj, const CallbackBase &cb) const = 0;
2587
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    49
  /**
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    50
   * \param obj the object instance which contains the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    51
   * \param context the context to bind to the user callback.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    52
   * \param cb the callback to connect to the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    53
   */
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
    54
  virtual bool Connect (ObjectBase *obj, std::string context, const CallbackBase &cb) const = 0;
2587
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    55
  /**
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    56
   * \param obj the object instance which contains the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    57
   * \param cb the callback to disconnect from the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    58
   */
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
    59
  virtual bool DisconnectWithoutContext (ObjectBase *obj, const CallbackBase &cb) const = 0;
2587
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    60
  /**
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    61
   * \param obj the object instance which contains the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    62
   * \param context the context which was bound to the user callback.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    63
   * \param cb the callback to disconnect from the target trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    64
   */
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
    65
  virtual bool Disconnect (ObjectBase *obj, std::string context, const CallbackBase &cb) const = 0;
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
private:
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  mutable uint32_t m_count;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
};
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
2587
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    70
/**
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    71
 * \param a the trace source
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    72
 *
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    73
 * Create a TraceSourceAccessor which will control access to the underlying
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    74
 * trace source.
d8bf55c18428 dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2569
diff changeset
    75
 */
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
template <typename T>
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
Ptr<const TraceSourceAccessor> MakeTraceSourceAccessor (T a);
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
} // namespace ns3
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
namespace ns3 {
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
template <typename T, typename SOURCE>
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
Ptr<const TraceSourceAccessor> 
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
DoMakeTraceSourceAccessor (SOURCE T::*a)
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
{
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  struct Accessor : public TraceSourceAccessor
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
  {
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
    89
    virtual bool ConnectWithoutContext (ObjectBase *obj, const CallbackBase &cb) const {
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
      T *p = dynamic_cast<T*> (obj);
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
      if (p == 0)
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
	{
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
	  return false;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
	}
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
    95
      (p->*m_source).ConnectWithoutContext (cb);
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
      return true;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
    }
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
    98
    virtual bool Connect (ObjectBase *obj, std::string context, const CallbackBase &cb) const {
2531
b451b5fc8b57 implement context-based trace connection
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2463
diff changeset
    99
      T *p = dynamic_cast<T*> (obj);
b451b5fc8b57 implement context-based trace connection
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2463
diff changeset
   100
      if (p == 0)
b451b5fc8b57 implement context-based trace connection
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2463
diff changeset
   101
	{
b451b5fc8b57 implement context-based trace connection
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2463
diff changeset
   102
	  return false;
b451b5fc8b57 implement context-based trace connection
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2463
diff changeset
   103
	}
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
   104
      (p->*m_source).Connect (cb, context);
2531
b451b5fc8b57 implement context-based trace connection
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2463
diff changeset
   105
      return true;
b451b5fc8b57 implement context-based trace connection
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2463
diff changeset
   106
    }
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
   107
    virtual bool DisconnectWithoutContext (ObjectBase *obj, const CallbackBase &cb) const {
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
      T *p = dynamic_cast<T*> (obj);
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
      if (p == 0)
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
	{
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
	  return false;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
	}
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
   113
      (p->*m_source).DisconnectWithoutContext (cb);
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
      return true;      
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
    }
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
   116
    virtual bool Disconnect (ObjectBase *obj, std::string context, const CallbackBase &cb) const {
2569
d5cff2968984 make Disconnect work with trace contexts.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2531
diff changeset
   117
      T *p = dynamic_cast<T*> (obj);
d5cff2968984 make Disconnect work with trace contexts.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2531
diff changeset
   118
      if (p == 0)
d5cff2968984 make Disconnect work with trace contexts.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2531
diff changeset
   119
	{
d5cff2968984 make Disconnect work with trace contexts.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2531
diff changeset
   120
	  return false;
d5cff2968984 make Disconnect work with trace contexts.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2531
diff changeset
   121
	}
2594
a8f89acd17a1 Config::Connect -> Config::ConnectWithoutContext && Config::ConnectWithContext -> Config::Connect
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2587
diff changeset
   122
      (p->*m_source).Disconnect (cb, context);
2569
d5cff2968984 make Disconnect work with trace contexts.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2531
diff changeset
   123
      return true;      
d5cff2968984 make Disconnect work with trace contexts.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2531
diff changeset
   124
    }
2463
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
    SOURCE T::*m_source;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
  } *accessor = new Accessor ();
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
  accessor->m_source = a;
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  return Ptr<const TraceSourceAccessor> (accessor, false);
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
}
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
template <typename T>
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
Ptr<const TraceSourceAccessor> MakeTraceSourceAccessor (T a)
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
{
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
  return DoMakeTraceSourceAccessor (a);
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
}
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
} // namespace ns3
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
c77e43117673 actually allow connection and disconnection to trace sources registered in TypeIds
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
#endif /* TRACE_SOURCE_ACCESSOR_H */