Small OLSR memory optimisation.
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Mon Mar 03 15:02:33 2008 +0000 (23 months ago)
changeset 2358bf0230eba16e
parent 2357 d64b1561b1c2
child 2359 cbe5d6629daf
Small OLSR memory optimisation.
src/routing/olsr/olsr-agent-impl.cc
src/routing/olsr/olsr-agent-impl.h
     1.1 --- a/src/routing/olsr/olsr-agent-impl.cc	Tue Feb 26 01:39:59 2008 +0100
     1.2 +++ b/src/routing/olsr/olsr-agent-impl.cc	Mon Mar 03 15:02:33 2008 +0000
     1.3 @@ -1115,7 +1115,9 @@
     1.4            // Schedules topology tuple deletion
     1.5            m_events.Track (Simulator::Schedule (DELAY (topologyTuple.expirationTime),
     1.6                                                 &AgentImpl::TopologyTupleTimerExpire,
     1.7 -                                               this, topologyTuple));
     1.8 +                                               this,
     1.9 +                                               topologyTuple.destAddr,
    1.10 +                                               topologyTuple.lastAddr));
    1.11          }
    1.12      }
    1.13  
    1.14 @@ -1190,7 +1192,7 @@
    1.15            NS_LOG_LOGIC ("New IfaceAssoc added: " << tuple);
    1.16            // Schedules iface association tuple deletion
    1.17            Simulator::Schedule (DELAY (tuple.time),
    1.18 -                               &AgentImpl::IfaceAssocTupleTimerExpire, this, tuple);
    1.19 +                               &AgentImpl::IfaceAssocTupleTimerExpire, this, tuple.ifaceAddr);
    1.20          }
    1.21      }
    1.22  
    1.23 @@ -1286,7 +1288,8 @@
    1.24        AddDuplicateTuple (newDup);
    1.25        // Schedule dup tuple deletion
    1.26        Simulator::Schedule (OLSR_DUP_HOLD_TIME,
    1.27 -                           &AgentImpl::DupTupleTimerExpire, this, newDup);
    1.28 +                           &AgentImpl::DupTupleTimerExpire, this,
    1.29 +                           newDup.address, newDup.sequenceNumber);
    1.30      }
    1.31  }
    1.32  
    1.33 @@ -1670,7 +1673,8 @@
    1.34      {
    1.35        LinkTupleAdded (*link_tuple, hello.willingness);
    1.36        m_events.Track (Simulator::Schedule (DELAY (std::min (link_tuple->time, link_tuple->symTime)),
    1.37 -                                           &AgentImpl::LinkTupleTimerExpire, this, *link_tuple));
    1.38 +                                           &AgentImpl::LinkTupleTimerExpire, this,
    1.39 +                                           link_tuple->neighborIfaceAddr));
    1.40      }
    1.41    NS_LOG_DEBUG ("@" << now.GetSeconds () << ": Olsr node " << m_mainAddress
    1.42                  << ": LinkSensing END");
    1.43 @@ -1769,7 +1773,8 @@
    1.44                        // Schedules nb2hop tuple deletion
    1.45                        m_events.Track (Simulator::Schedule (DELAY (new_nb2hop_tuple.expirationTime),
    1.46                                                             &AgentImpl::Nb2hopTupleTimerExpire, this,
    1.47 -                                                           new_nb2hop_tuple));
    1.48 +                                                           new_nb2hop_tuple.neighborMainAddr,
    1.49 +                                                           new_nb2hop_tuple.twoHopNeighborAddr));
    1.50                      }
    1.51                    else
    1.52                      {
    1.53 @@ -1839,7 +1844,7 @@
    1.54                        m_events.Track (Simulator::Schedule
    1.55                                        (DELAY (mprsel_tuple.expirationTime),
    1.56                                         &AgentImpl::MprSelTupleTimerExpire, this,
    1.57 -                                       mprsel_tuple));
    1.58 +                                       mprsel_tuple.mainAddr));
    1.59                      }
    1.60                    else
    1.61                      {
    1.62 @@ -2261,10 +2266,10 @@
    1.63  /// \param tuple The tuple which has expired.
    1.64  ///
    1.65  void
    1.66 -AgentImpl::DupTupleTimerExpire (DuplicateTuple tuple_)
    1.67 +AgentImpl::DupTupleTimerExpire (Ipv4Address address, uint16_t sequenceNumber)
    1.68  {
    1.69    DuplicateTuple *tuple =
    1.70 -    m_state.FindDuplicateTuple (tuple_.address, tuple_.sequenceNumber);
    1.71 +    m_state.FindDuplicateTuple (address, sequenceNumber);
    1.72    if (tuple == NULL)
    1.73      {
    1.74        return;
    1.75 @@ -2277,7 +2282,7 @@
    1.76      {
    1.77        m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime),
    1.78                                             &AgentImpl::DupTupleTimerExpire, this,
    1.79 -                                           *tuple));
    1.80 +                                           address, sequenceNumber));
    1.81      }
    1.82  }
    1.83  
    1.84 @@ -2293,12 +2298,12 @@
    1.85  /// \param e The event which has expired.
    1.86  ///
    1.87  void
    1.88 -AgentImpl::LinkTupleTimerExpire (LinkTuple tuple_)
    1.89 +AgentImpl::LinkTupleTimerExpire (Ipv4Address neighborIfaceAddr)
    1.90  {
    1.91    Time now = Simulator::Now ();
    1.92  
    1.93    // the tuple parameter may be a stale copy; get a newer version from m_state
    1.94 -  LinkTuple *tuple = m_state.FindLinkTuple (tuple_.neighborIfaceAddr);
    1.95 +  LinkTuple *tuple = m_state.FindLinkTuple (neighborIfaceAddr);
    1.96    if (tuple == NULL)
    1.97      {
    1.98        return;
    1.99 @@ -2316,13 +2321,13 @@
   1.100  
   1.101        m_events.Track (Simulator::Schedule (DELAY (tuple->time),
   1.102                                             &AgentImpl::LinkTupleTimerExpire, this,
   1.103 -                                           *tuple));
   1.104 +                                           neighborIfaceAddr));
   1.105      }
   1.106    else
   1.107      {
   1.108        m_events.Track (Simulator::Schedule (DELAY (std::min (tuple->time, tuple->symTime)),
   1.109                                             &AgentImpl::LinkTupleTimerExpire, this,
   1.110 -                                           *tuple));
   1.111 +                                           neighborIfaceAddr));
   1.112      }
   1.113  }
   1.114  
   1.115 @@ -2334,11 +2339,10 @@
   1.116  /// \param e The event which has expired.
   1.117  ///
   1.118  void
   1.119 -AgentImpl::Nb2hopTupleTimerExpire (TwoHopNeighborTuple tuple_)
   1.120 +AgentImpl::Nb2hopTupleTimerExpire (Ipv4Address neighborMainAddr, Ipv4Address twoHopNeighborAddr)
   1.121  {
   1.122    TwoHopNeighborTuple *tuple;
   1.123 -  tuple = m_state.FindTwoHopNeighborTuple (tuple_.neighborMainAddr,
   1.124 -                                           tuple_.twoHopNeighborAddr);
   1.125 +  tuple = m_state.FindTwoHopNeighborTuple (neighborMainAddr, twoHopNeighborAddr);
   1.126    if (tuple == NULL)
   1.127      {
   1.128        return;
   1.129 @@ -2351,7 +2355,7 @@
   1.130      {
   1.131        m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime),
   1.132                                             &AgentImpl::Nb2hopTupleTimerExpire,
   1.133 -                                           this, *tuple));
   1.134 +                                           this, neighborMainAddr, twoHopNeighborAddr));
   1.135      }
   1.136  }
   1.137  
   1.138 @@ -2363,9 +2367,9 @@
   1.139  /// \param e The event which has expired.
   1.140  ///
   1.141  void
   1.142 -AgentImpl::MprSelTupleTimerExpire (MprSelectorTuple tuple_)
   1.143 +AgentImpl::MprSelTupleTimerExpire (Ipv4Address mainAddr)
   1.144  {
   1.145 -  MprSelectorTuple *tuple = m_state.FindMprSelectorTuple (tuple_.mainAddr);
   1.146 +  MprSelectorTuple *tuple = m_state.FindMprSelectorTuple (mainAddr);
   1.147    if (tuple == NULL)
   1.148      {
   1.149        return;
   1.150 @@ -2378,7 +2382,7 @@
   1.151      {
   1.152        m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime),
   1.153                                             &AgentImpl::MprSelTupleTimerExpire,
   1.154 -                                           this, *tuple));
   1.155 +                                           this, mainAddr));
   1.156      }
   1.157  }
   1.158  
   1.159 @@ -2390,10 +2394,9 @@
   1.160  /// \param e The event which has expired.
   1.161  ///
   1.162  void
   1.163 -AgentImpl::TopologyTupleTimerExpire (TopologyTuple tuple_)
   1.164 +AgentImpl::TopologyTupleTimerExpire (Ipv4Address destAddr, Ipv4Address lastAddr)
   1.165  {
   1.166 -  TopologyTuple *tuple = m_state.FindTopologyTuple (tuple_.destAddr,
   1.167 -                                                    tuple_.lastAddr);
   1.168 +  TopologyTuple *tuple = m_state.FindTopologyTuple (destAddr, lastAddr);
   1.169    if (tuple == NULL)
   1.170      {
   1.171        return;
   1.172 @@ -2406,7 +2409,7 @@
   1.173      {
   1.174        m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime),
   1.175                                             &AgentImpl::TopologyTupleTimerExpire,
   1.176 -                                           this, *tuple));
   1.177 +                                           this, tuple->destAddr, tuple->lastAddr));
   1.178      }
   1.179  }
   1.180  
   1.181 @@ -2416,9 +2419,9 @@
   1.182  /// \param e The event which has expired.
   1.183  ///
   1.184  void
   1.185 -AgentImpl::IfaceAssocTupleTimerExpire (IfaceAssocTuple tuple_)
   1.186 +AgentImpl::IfaceAssocTupleTimerExpire (Ipv4Address ifaceAddr)
   1.187  {
   1.188 -  IfaceAssocTuple *tuple = m_state.FindIfaceAssocTuple (tuple_.ifaceAddr);
   1.189 +  IfaceAssocTuple *tuple = m_state.FindIfaceAssocTuple (ifaceAddr);
   1.190    if (tuple == NULL)
   1.191      {
   1.192        return;
   1.193 @@ -2431,7 +2434,7 @@
   1.194      {
   1.195        m_events.Track (Simulator::Schedule (DELAY (tuple->time),
   1.196                                             &AgentImpl::IfaceAssocTupleTimerExpire,
   1.197 -                                           this, *tuple));
   1.198 +                                           this, ifaceAddr));
   1.199      }
   1.200  }
   1.201  
     2.1 --- a/src/routing/olsr/olsr-agent-impl.h	Tue Feb 26 01:39:59 2008 +0100
     2.2 +++ b/src/routing/olsr/olsr-agent-impl.h	Mon Mar 03 15:02:33 2008 +0000
     2.3 @@ -114,13 +114,13 @@
     2.4    Timer m_midTimer;
     2.5    void MidTimerExpire ();
     2.6  
     2.7 -  void DupTupleTimerExpire (DuplicateTuple tuple);
     2.8 +  void DupTupleTimerExpire (Ipv4Address address, uint16_t sequenceNumber);
     2.9    bool m_linkTupleTimerFirstTime;
    2.10 -  void LinkTupleTimerExpire (LinkTuple tuple);
    2.11 -  void Nb2hopTupleTimerExpire (TwoHopNeighborTuple tuple);
    2.12 -  void MprSelTupleTimerExpire (MprSelectorTuple tuple);
    2.13 -  void TopologyTupleTimerExpire (TopologyTuple tuple);
    2.14 -  void IfaceAssocTupleTimerExpire (IfaceAssocTuple tuple);
    2.15 +  void LinkTupleTimerExpire (Ipv4Address neighborIfaceAddr);
    2.16 +  void Nb2hopTupleTimerExpire (Ipv4Address neighborMainAddr, Ipv4Address twoHopNeighborAddr);
    2.17 +  void MprSelTupleTimerExpire (Ipv4Address mainAddr);
    2.18 +  void TopologyTupleTimerExpire (Ipv4Address destAddr, Ipv4Address lastAddr);
    2.19 +  void IfaceAssocTupleTimerExpire (Ipv4Address ifaceAddr);
    2.20  
    2.21    void IncrementAnsn ();
    2.22