#include <OSPFNeighborStateExchangeStart.h>
Inheritance diagram for OSPF::NeighborStateExchangeStart:
Public Member Functions | |
virtual void | ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event) |
virtual Neighbor::NeighborStateType | GetState (void) const |
virtual Neighbor::NeighborStateType OSPF::NeighborStateExchangeStart::GetState | ( | void | ) | const [inline, virtual] |
void OSPF::NeighborStateExchangeStart::ProcessEvent | ( | Neighbor * | neighbor, | |
Neighbor::NeighborEventType | event | |||
) | [virtual] |
Implements OSPF::NeighborState.
00012 { 00013 if ((event == OSPF::Neighbor::KillNeighbor) || (event == OSPF::Neighbor::LinkDown)) { 00014 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler (); 00015 neighbor->Reset (); 00016 messageHandler->ClearTimer (neighbor->GetInactivityTimer ()); 00017 ChangeState (neighbor, new OSPF::NeighborStateDown, this); 00018 } 00019 if (event == OSPF::Neighbor::InactivityTimer) { 00020 neighbor->Reset (); 00021 if (neighbor->GetInterface ()->GetType () == OSPF::Interface::NBMA) { 00022 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler (); 00023 messageHandler->StartTimer (neighbor->GetPollTimer (), neighbor->GetInterface ()->GetPollInterval ()); 00024 } 00025 ChangeState (neighbor, new OSPF::NeighborStateDown, this); 00026 } 00027 if (event == OSPF::Neighbor::OneWayReceived) { 00028 neighbor->Reset (); 00029 ChangeState (neighbor, new OSPF::NeighborStateInit, this); 00030 } 00031 if (event == OSPF::Neighbor::HelloReceived) { 00032 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler (); 00033 messageHandler->ClearTimer (neighbor->GetInactivityTimer ()); 00034 messageHandler->StartTimer (neighbor->GetInactivityTimer (), neighbor->GetRouterDeadInterval ()); 00035 } 00036 if (event == OSPF::Neighbor::IsAdjacencyOK) { 00037 if (!neighbor->NeedAdjacency ()) { 00038 neighbor->Reset (); 00039 ChangeState (neighbor, new OSPF::NeighborStateTwoWay, this); 00040 } 00041 } 00042 if (event == OSPF::Neighbor::DDRetransmissionTimer) { 00043 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler (); 00044 neighbor->RetransmitDatabaseDescriptionPacket (); 00045 messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetInterface ()->GetRetransmissionInterval ()); 00046 } 00047 if (event == OSPF::Neighbor::NegotiationDone) { 00048 neighbor->CreateDatabaseSummary (); 00049 neighbor->SendDatabaseDescriptionPacket (); 00050 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler (); 00051 messageHandler->ClearTimer (neighbor->GetDDRetransmissionTimer ()); 00052 ChangeState (neighbor, new OSPF::NeighborStateExchange, this); 00053 } 00054 }