Line data Source code
1 : /* 2 : * Copyright (c) 2014 CodiLime, Inc. All rights reserved. 3 : */ 4 : 5 : #ifndef SRC_BFD_STATE_MACHINE_H_ 6 : #define SRC_BFD_STATE_MACHINE_H_ 7 : 8 : #include "bfd/bfd_common.h" 9 : 10 : #include <boost/function.hpp> 11 : #include <boost/optional.hpp> 12 : #include <io/event_manager.h> 13 : 14 : namespace BFD { 15 : class Session; 16 : class StateMachine { 17 : public: 18 : virtual void ProcessRemoteState(BFD::BFDState state) = 0; 19 : virtual void ProcessTimeout() = 0; 20 : virtual BFD::BFDState GetState() = 0; 21 : virtual void SetCallback(boost::optional<ChangeCb> cb) = 0; 22 32 : virtual ~StateMachine() {} 23 : }; 24 : 25 : StateMachine *CreateStateMachine(EventManager *evm, Session *session); 26 : } // namespace BFD 27 : 28 : #endif // SRC_BFD_STATE_MACHINE_H_