57 Ipv4L4Demux::CreateTraceResolver (TraceContext const &context) |
57 Ipv4L4Demux::CreateTraceResolver (TraceContext const &context) |
58 { |
58 { |
59 CompositeTraceResolver *resolver = new CompositeTraceResolver (context); |
59 CompositeTraceResolver *resolver = new CompositeTraceResolver (context); |
60 for (L4List_t::const_iterator i = m_protocols.begin(); i != m_protocols.end(); ++i) |
60 for (L4List_t::const_iterator i = m_protocols.begin(); i != m_protocols.end(); ++i) |
61 { |
61 { |
62 Ipv4L4Protocol *protocol = *i; |
62 Ptr<Ipv4L4Protocol> protocol = *i; |
63 std::string protValue; |
63 std::string protValue; |
64 std::ostringstream oss (protValue); |
64 std::ostringstream oss (protValue); |
65 oss << (*i)->GetProtocolNumber (); |
65 oss << (*i)->GetProtocolNumber (); |
66 Ipv4L4ProtocolTraceType protocolNumber = (*i)->GetProtocolNumber (); |
66 Ipv4L4ProtocolTraceType protocolNumber = (*i)->GetProtocolNumber (); |
67 resolver->Add (protValue, |
67 resolver->Add (protValue, |
68 MakeCallback (&Ipv4L4Protocol::CreateTraceResolver, protocol), |
68 MakeCallback (&Ipv4L4Protocol::CreateTraceResolver, protocol.Peek ()), |
69 protocolNumber); |
69 protocolNumber); |
70 } |
70 } |
71 return resolver; |
71 return resolver; |
72 } |
72 } |
73 void |
73 void |
74 Ipv4L4Demux::Insert(Ipv4L4Protocol *protocol) |
74 Ipv4L4Demux::Insert(Ptr<Ipv4L4Protocol> protocol) |
75 { |
75 { |
76 protocol->Ref (); |
|
77 m_protocols.push_back (protocol); |
76 m_protocols.push_back (protocol); |
78 } |
77 } |
79 Ipv4L4Protocol* |
78 Ptr<Ipv4L4Protocol> |
80 Ipv4L4Demux::PeekProtocol(int protocolNumber) |
79 Ipv4L4Demux::GetProtocol(int protocolNumber) |
81 { |
80 { |
82 for (L4List_t::iterator i = m_protocols.begin(); i != m_protocols.end(); ++i) |
81 for (L4List_t::iterator i = m_protocols.begin(); i != m_protocols.end(); ++i) |
83 { |
82 { |
84 if ((*i)->GetProtocolNumber () == protocolNumber) |
83 if ((*i)->GetProtocolNumber () == protocolNumber) |
85 { |
84 { |