src/internet-node/ipv4-l4-demux.cc
changeset 568 e1660959ecbb
parent 558 669c703c04a4
child 573 0da9201a048e
equal deleted inserted replaced
567:6fb98941c36f 568:e1660959ecbb
    41 {}
    41 {}
    42 
    42 
    43 void
    43 void
    44 Ipv4L4Demux::DoDispose (void)
    44 Ipv4L4Demux::DoDispose (void)
    45 {
    45 {
    46   for (L4List_t::const_iterator i = m_protocols.begin(); i != m_protocols.end(); ++i)
    46   for (L4List_t::iterator i = m_protocols.begin(); i != m_protocols.end(); ++i)
    47     {
    47     {
    48       (*i)->Dispose ();
    48       (*i)->Dispose ();
    49       (*i)->Unref ();
    49       *i = 0;
    50     }
    50     }
    51   m_protocols.clear ();
    51   m_protocols.clear ();
    52   m_node = 0;
    52   m_node = 0;
    53   NsUnknown::DoDispose ();
    53   NsUnknown::DoDispose ();
    54 }
    54 }
    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 	{
    87 	}
    86 	}
    88     }
    87     }
    89   return 0;
    88   return 0;
    90 }
    89 }
    91 void
    90 void
    92 Ipv4L4Demux::Erase(Ipv4L4Protocol*protocol)
    91 Ipv4L4Demux::Erase(Ptr<Ipv4L4Protocol> protocol)
    93 {
    92 {
    94   m_protocols.remove (protocol);
    93   m_protocols.remove (protocol);
    95 }
    94 }
    96 
    95 
    97 
    96