make EventTraceSource acceptable to the MakeTraceSourceAccessor function
This commit is contained in:
@@ -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<int8_t> ())
|
||||
.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<Derived> ());
|
||||
}
|
||||
|
||||
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<Ptr<Derived> > m_vector2;
|
||||
IntegerTraceSource<int8_t> m_intSrc1;
|
||||
IntegerTraceSource<int8_t> m_intSrc2;
|
||||
EventTraceSource<double, int, float> 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;
|
||||
}
|
||||
|
||||
@@ -61,29 +61,29 @@ EventTraceSourceTest::RunTests (void)
|
||||
bool result = true;
|
||||
|
||||
EventTraceSource<uint8_t,double> 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);
|
||||
|
||||
@@ -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<T1,T2,T3,T4>::EventTraceSource ()
|
||||
template<typename T1, typename T2,
|
||||
typename T3, typename T4>
|
||||
void
|
||||
EventTraceSource<T1,T2,T3,T4>::AddCallback (const CallbackBase & callback)
|
||||
EventTraceSource<T1,T2,T3,T4>::Connect (const CallbackBase & callback)
|
||||
{
|
||||
Callback<void,T1,T2,T3,T4> cb;
|
||||
cb.Assign (callback);
|
||||
@@ -77,7 +77,7 @@ EventTraceSource<T1,T2,T3,T4>::AddCallback (const CallbackBase & callback)
|
||||
template<typename T1, typename T2,
|
||||
typename T3, typename T4>
|
||||
void
|
||||
EventTraceSource<T1,T2,T3,T4>::RemoveCallback (const CallbackBase & callback)
|
||||
EventTraceSource<T1,T2,T3,T4>::Disconnect (const CallbackBase & callback)
|
||||
{
|
||||
for (typename CallbackList::iterator i = m_callbackList.begin ();
|
||||
i != m_callbackList.end (); /* empty */)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user