INET Framework for OMNeT++/OMNEST
AnsaOspf6::NeighborStateLoading Class Reference

#include <ansaOspfNeighborStateLoading6.h>

Inheritance diagram for AnsaOspf6::NeighborStateLoading:
AnsaOspf6::NeighborState

List of all members.

Private Member Functions

virtual void ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event)
virtual Neighbor::NeighborStateType GetState (void) const

Detailed Description

Definition at line 23 of file ansaOspfNeighborStateLoading6.h.


Member Function Documentation

virtual Neighbor::NeighborStateType AnsaOspf6::NeighborStateLoading::GetState ( void  ) const [inline, private, virtual]

Implements AnsaOspf6::NeighborState.

Definition at line 25 of file ansaOspfNeighborStateLoading6.h.

Implements AnsaOspf6::NeighborState.

Definition at line 28 of file ansaOspfNeighborStateLoading6.cc.

                                                {
   if ((event == AnsaOspf6::Neighbor::KillNeighbor) || (event == AnsaOspf6::Neighbor::LinkDown)){
      MessageHandler* messageHandler =
            neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler();
      neighbor->Reset();
      messageHandler->ClearTimer(neighbor->GetInactivityTimer());
      ChangeState(neighbor, new AnsaOspf6::NeighborStateDown, this);
   }
   if (event == AnsaOspf6::Neighbor::InactivityTimer){
      neighbor->Reset();
      if (neighbor->GetInterface()->GetType() == AnsaOspf6::Interface::NBMA){
         MessageHandler* messageHandler =
               neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler();
         messageHandler->StartTimer(neighbor->GetPollTimer(),
               neighbor->GetInterface()->GetPollInterval());
      }
      ChangeState(neighbor, new AnsaOspf6::NeighborStateDown, this);
   }
   if (event == AnsaOspf6::Neighbor::OneWayReceived){
      neighbor->Reset();
      ChangeState(neighbor, new AnsaOspf6::NeighborStateInit, this);
   }
   if (event == AnsaOspf6::Neighbor::HelloReceived){
      MessageHandler* messageHandler =
            neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler();
      messageHandler->ClearTimer(neighbor->GetInactivityTimer());
      messageHandler->StartTimer(neighbor->GetInactivityTimer(), neighbor->GetRouterDeadInterval());
   }
   if (event == AnsaOspf6::Neighbor::LoadingDone){
      neighbor->ClearRequestRetransmissionTimer();
      ChangeState(neighbor, new AnsaOspf6::NeighborStateFull, this);
   }
   if (event == AnsaOspf6::Neighbor::IsAdjacencyOK){
      if (!neighbor->NeedAdjacency()){
         neighbor->Reset();
         ChangeState(neighbor, new AnsaOspf6::NeighborStateTwoWay, this);
      }
   }
   if ((event == AnsaOspf6::Neighbor::SequenceNumberMismatch) || (event
         == AnsaOspf6::Neighbor::BadLinkStateRequest)){
      MessageHandler* messageHandler =
            neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler();
      neighbor->Reset();
      neighbor->IncrementDDSequenceNumber();
      neighbor->SendDatabaseDescriptionPacket(true);
      messageHandler->StartTimer(neighbor->GetDDRetransmissionTimer(),
            neighbor->GetInterface()->GetRetransmissionInterval());
      ChangeState(neighbor, new AnsaOspf6::NeighborStateExchangeStart, this);
   }
   if (event == AnsaOspf6::Neighbor::RequestRetransmissionTimer){
      neighbor->SendLinkStateRequestPacket();
      neighbor->StartRequestRetransmissionTimer();
   }
   if (event == AnsaOspf6::Neighbor::UpdateRetransmissionTimer){
      neighbor->RetransmitUpdatePacket();
      neighbor->StartUpdateRetransmissionTimer();
   }
   if (event == AnsaOspf6::Neighbor::DDRetransmissionTimer){
      neighbor->DeleteLastSentDDPacket();
   }
}

The documentation for this class was generated from the following files: