hello
i have created 2 files tcpvegas.h and tcpvegas.cc,
in .cc file i need to double the congestion window
after 2*rtt times
i use following code:
Time current = Time::FromInteger(((m_rtt->GetCurrentEstimate().GetInteger())*2), Time::S);
Simulator::Schedule(Seconds(current),MakeCallback(&TcpVegas::winuprtt));
the above 2 lines are wriiten inside " void TcpVegas::NewAck (const SequenceNumber32& seq)"
and the function called defined as:
void TcpVegas::winuprtt()
{
m_cWnd=2*(m_cWnd.Get());
}
and fuction winuprtt is declared as the member function of class TcpVegas;
m_cWnd is declared in tcpvegas.h as
TracedValue<uint32_t> m_cWnd;
when i use it in it gives following errors:
./src/internet/model/tcp-vegas.cc:119:6: error: prototype for ‘void ns3::TcpVegas::winuprtt()’ does not match any in class ‘ns3::TcpVegas’
./ns3/tcp-vegas.h:47:6: error: candidate is: void ns3::TcpVegas::winuprtt(ns3::Ptr<ns3::TcpVegas>)
../src/internet/model/tcp-vegas.cc: In member function ‘virtual void ns3::TcpVegas::NewAck(const SequenceNumber32&)’:
../src/internet/model/tcp-vegas.cc:277:52: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say ‘&ns3::TcpVegas::winuprtt’ [-fpermissive]
../src/internet/model/tcp-vegas.cc:277:60: error: no matching function for call to ‘MakeCallback(void (ns3::TcpVegas::*)(ns3::Ptr<ns3::TcpVegas>))’
../src/internet/model/tcp-vegas.cc:277:60: note: candidates are:
./ns3/callback.h:1238:13: note: template<class T, class OBJ, class R> ns3::Callback<R> ns3::MakeCallback(R (T::*)(), OBJ)
./ns3/callback.h:1242:13: note: template<class T, class OBJ, class R> ns3::Callback<R> ns3::MakeCallback(R (T::*)()const, OBJ)
./ns3/callback.h:1246:16: note: template<class T, class OBJ, class R, class T1> ns3::Callback<R, T1> ns3::MakeCallback(R (T::*)(T1), OBJ)
./ns3/callback.h:1250:16: note: template<class T, class OBJ, class R, class T1> ns3::Callback<R, T1> ns3::MakeCallback(R (T::*)(T1)const, OBJ)
./ns3/callback.h:1254:19: note: template<class T, class OBJ, class R, class T1, class T2> ns3::Callback<R, T1, T2> ns3::MakeCallback(R (T::*)(T1, T2), OBJ)
./ns3/callback.h:1258:19: note: template<class T, class OBJ, class R, class T1, class T2> ns3::Callback<R, T1, T2> ns3::MakeCallback(R (T::*)(T1, T2)const, OBJ)
./ns3/callback.h:1262:22: note: template<class T, class OBJ, class R, class T1, class T2, class T3> ns3::Callback<R, T1, T2, T3> ns3::MakeCallback(R (T::*)(T1, T2, T3), OBJ)
./ns3/callback.h:1266:22: note: template<class T, class OBJ, class R, class T1, class T2, class T3> ns3::Callback<R, T1, T2, T3> ns3::MakeCallback(R (T::*)(T1, T2, T3)const, OBJ)
./ns3/callback.h:1270:25: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4> ns3::Callback<R, T1, T2, T3, T4> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4), OBJ)
./ns3/callback.h:1274:25: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4> ns3::Callback<R, T1, T2, T3, T4> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4)const, OBJ)
./ns3/callback.h:1278:28: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5> ns3::Callback<R, T1, T2, T3, T4, T5> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5), OBJ)
./ns3/callback.h:1282:28: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5> ns3::Callback<R, T1, T2, T3, T4, T5> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5)const, OBJ)
./ns3/callback.h:1286:31: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6> ns3::Callback<R, T1, T2, T3, T4, T5, T6> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6), OBJ)
./ns3/callback.h:1290:31: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6> ns3::Callback<R, T1, T2, T3, T4, T5, T6> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6)const, OBJ)
./ns3/callback.h:1294:34: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6, T7), OBJ)
./ns3/callback.h:1298:34: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6, T7)const, OBJ)
./ns3/callback.h:1302:37: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7, T8> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6, T7, T8), OBJ)
./ns3/callback.h:1306:37: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7, T8> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6, T7, T8)const, OBJ)
./ns3/callback.h:1310:40: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6, T7, T8, T9), OBJ)
./ns3/callback.h:1314:40: note: template<class T, class OBJ, class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> ns3::MakeCallback(R (T::*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)const, OBJ)
./ns3/callback.h:1338:13: note: template<class R> ns3::Callback<R> ns3::MakeCallback(R (*)())
./ns3/callback.h:1342:16: note: template<class R, class T1> ns3::Callback<R, T1> ns3::MakeCallback(R (*)(T1))
./ns3/callback.h:1346:19: note: template<class R, class T1, class T2> ns3::Callback<R, T1, T2> ns3::MakeCallback(R (*)(T1, T2))
./ns3/callback.h:1350:22: note: template<class R, class T1, class T2, class T3> ns3::Callback<R, T1, T2, T3> ns3::MakeCallback(R (*)(T1, T2, T3))
./ns3/callback.h:1354:25: note: template<class R, class T1, class T2, class T3, class T4> ns3::Callback<R, T1, T2, T3, T4> ns3::MakeCallback(R (*)(T1, T2, T3, T4))
./ns3/callback.h:1358:28: note: template<class R, class T1, class T2, class T3, class T4, class T5> ns3::Callback<R, T1, T2, T3, T4, T5> ns3::MakeCallback(R (*)(T1, T2, T3, T4, T5))
./ns3/callback.h:1362:31: note: template<class R, class T1, class T2, class T3, class T4, class T5, class T6> ns3::Callback<R, T1, T2, T3, T4, T5, T6> ns3::MakeCallback(R (*)(T1, T2, T3, T4, T5, T6))
./ns3/callback.h:1366:34: note: template<class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7> ns3::MakeCallback(R (*)(T1, T2, T3, T4, T5, T6, T7))
./ns3/callback.h:1370:37: note: template<class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7, T8> ns3::MakeCallback(R (*)(T1, T2, T3, T4, T5, T6, T7, T8))
./ns3/callback.h:1374:40: note: template<class R, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> ns3::Callback<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> ns3::MakeCallback(R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9))
what am i doing wrong and how can i solve this issue