From c4238a2fb74cf493bd7806dfde7e2aa5ff565e3d Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Fri, 22 Feb 2008 00:22:16 +0100 Subject: [PATCH] make EventTraceSource acceptable to the MakeTraceSourceAccessor function --- src/core/attribute-test.cc | 35 ++++++++++++++++++++++++++++----- src/core/event-trace-source.cc | 12 +++++------ src/core/event-trace-source.h | 8 ++++---- src/core/integer-trace-source.h | 4 ++-- 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/core/attribute-test.cc b/src/core/attribute-test.cc index d7be57db9..15f0e6c0d 100644 --- a/src/core/attribute-test.cc +++ b/src/core/attribute-test.cc @@ -20,9 +20,13 @@ public: virtual bool RunTests (void); private: void NotifySource1 (int64_t old, int64_t n) { - m_gotNew = n; + m_got1 = n; } - int64_t m_gotNew; + void NotifySource2 (double a, int b, float c) { + m_got2 = a; + } + int64_t m_got1; + double m_got2; }; class Derived : public Object @@ -111,6 +115,9 @@ public: MakeIntegerChecker ()) .AddTraceSource ("Source1", "help test", MakeTraceSourceAccessor (&AttributeObjectTest::m_intSrc1)) + + .AddTraceSource ("Source2", "help text", + MakeTraceSourceAccessor (&AttributeObjectTest::m_cb)) ; return tid; @@ -123,6 +130,10 @@ public: m_vector2.push_back (CreateObject ()); } + void InvokeCb (double a, int b, float c) { + m_cb (a,b,c); + } + private: void DoSetTestB (bool v) { m_boolTestA = v; @@ -162,6 +173,7 @@ private: std::vector > m_vector2; IntegerTraceSource m_intSrc1; IntegerTraceSource m_intSrc2; + EventTraceSource m_cb; }; @@ -392,14 +404,27 @@ AttributeTest::RunTests (void) NS_TEST_ASSERT (p->SetAttribute ("IntegerTraceSource2", Integer (-128))); NS_TEST_ASSERT (!p->SetAttribute ("IntegerTraceSource2", Integer (-129))); - m_gotNew = -2; + m_got1 = -2; NS_TEST_ASSERT (p->SetAttribute ("IntegerTraceSource1", Integer (-1))); NS_TEST_ASSERT (p->TraceSourceConnect ("Source1", MakeCallback (&AttributeTest::NotifySource1, this))); NS_TEST_ASSERT (p->SetAttribute ("IntegerTraceSource1", Integer (0))); - NS_TEST_ASSERT_EQUAL (m_gotNew, 0); + NS_TEST_ASSERT_EQUAL (m_got1, 0); NS_TEST_ASSERT (p->TraceSourceDisconnect ("Source1", MakeCallback (&AttributeTest::NotifySource1, this))); NS_TEST_ASSERT (p->SetAttribute ("IntegerTraceSource1", Integer (1))); - NS_TEST_ASSERT_EQUAL (m_gotNew, 0); + NS_TEST_ASSERT_EQUAL (m_got1, 0); + + m_got2 = 4.3; + p->InvokeCb (1.0, -5, 0.0); + NS_TEST_ASSERT_EQUAL (m_got2, 4.3); + NS_TEST_ASSERT (p->TraceSourceConnect ("Source2", MakeCallback (&AttributeTest::NotifySource2, this))); + NS_TEST_ASSERT_EQUAL (m_got2, 4.3); + p->InvokeCb (1.0, -5, 0.0); + NS_TEST_ASSERT_EQUAL (m_got2, 1.0); + NS_TEST_ASSERT (p->TraceSourceDisconnect ("Source2", MakeCallback (&AttributeTest::NotifySource2, this))); + p->InvokeCb (-1.0, -5, 0.0); + NS_TEST_ASSERT_EQUAL (m_got2, 1.0); + + return result; } diff --git a/src/core/event-trace-source.cc b/src/core/event-trace-source.cc index eed134e06..a4d935b40 100644 --- a/src/core/event-trace-source.cc +++ b/src/core/event-trace-source.cc @@ -61,29 +61,29 @@ EventTraceSourceTest::RunTests (void) bool result = true; EventTraceSource trace; - trace.AddCallback (MakeCallback (&EventTraceSourceTest::CbOne, this)); - trace.AddCallback (MakeCallback (&EventTraceSourceTest::CbTwo, this)); + trace.Connect (MakeCallback (&EventTraceSourceTest::CbOne, this)); + trace.Connect (MakeCallback (&EventTraceSourceTest::CbTwo, this)); m_one = false; m_two = false; trace (1, 2); NS_TEST_ASSERT (m_one); NS_TEST_ASSERT (m_two); - trace.RemoveCallback (MakeCallback (&EventTraceSourceTest::CbOne, this)); + trace.Disconnect (MakeCallback (&EventTraceSourceTest::CbOne, this)); m_one = false; m_two = false; trace (1, 2); NS_TEST_ASSERT (!m_one); NS_TEST_ASSERT (m_two); - trace.RemoveCallback (MakeCallback (&EventTraceSourceTest::CbTwo, this)); + trace.Disconnect (MakeCallback (&EventTraceSourceTest::CbTwo, this)); m_one = false; m_two = false; trace (1, 2); NS_TEST_ASSERT (!m_one); NS_TEST_ASSERT (!m_two); - trace.AddCallback (MakeCallback (&EventTraceSourceTest::CbOne, this)); - trace.AddCallback (MakeCallback (&EventTraceSourceTest::CbTwo, this)); + trace.Connect (MakeCallback (&EventTraceSourceTest::CbOne, this)); + trace.Connect (MakeCallback (&EventTraceSourceTest::CbTwo, this)); m_one = false; m_two = false; trace (1, 2); diff --git a/src/core/event-trace-source.h b/src/core/event-trace-source.h index 8e06b30eb..67a2502e0 100644 --- a/src/core/event-trace-source.h +++ b/src/core/event-trace-source.h @@ -40,8 +40,8 @@ class EventTraceSource { public: EventTraceSource (); - void AddCallback (const CallbackBase & callback); - void RemoveCallback (const CallbackBase & callback); + void Connect (const CallbackBase & callback); + void Disconnect (const CallbackBase & callback); void operator() (void) const; void operator() (T1 a1) const; void operator() (T1 a1, T2 a2) const; @@ -68,7 +68,7 @@ EventTraceSource::EventTraceSource () template void -EventTraceSource::AddCallback (const CallbackBase & callback) +EventTraceSource::Connect (const CallbackBase & callback) { Callback cb; cb.Assign (callback); @@ -77,7 +77,7 @@ EventTraceSource::AddCallback (const CallbackBase & callback) template void -EventTraceSource::RemoveCallback (const CallbackBase & callback) +EventTraceSource::Disconnect (const CallbackBase & callback) { for (typename CallbackList::iterator i = m_callbackList.begin (); i != m_callbackList.end (); /* empty */) diff --git a/src/core/integer-trace-source.h b/src/core/integer-trace-source.h index a719f3988..823d7b62f 100644 --- a/src/core/integer-trace-source.h +++ b/src/core/integer-trace-source.h @@ -40,10 +40,10 @@ public: } void Connect (const CallbackBase & callback) { - m_callback.AddCallback (callback); + m_callback.Connect (callback); } void Disconnect (const CallbackBase & callback) { - m_callback.RemoveCallback (callback); + m_callback.Disconnect (callback); } protected: void Notify (int64_t oldVal, int64_t newVal) {