OpenSDN source code
tsn_elector.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef tsn_elector_agent_oper_hpp
6 #define tsn_elector_agent_oper_hpp
7 
8 #include <cmn/agent_cmn.h>
9 #include <cmn/agent.h>
11 
12 struct TsnElectorState : public DBState {
13  TsnElectorState(AgentRouteTable *table, TsnElector *elector);
14  virtual ~TsnElectorState();
15 
18 };
19 
21 public:
22  TsnElectorWalker(const std::string &name, Agent *agent);
23  virtual ~TsnElectorWalker();
24 
25  void LeaveTsnMastership();
26  void AcquireTsnMastership();
27  virtual bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e);
28 
29 private:
30  bool master_;
32 };
33 
34 class TsnElector {
35 public:
36  typedef std::vector<std::string> ManagedPhysicalDevicesList;
38  virtual ~TsnElector();
39 
40  void Register();
41  void Shutdown();
42  void Notify(DBTablePartBase *partition, DBEntryBase *e);
43  void RouteNotify(DBTablePartBase *partition, DBEntryBase *e);
44  bool IsMaster() const;
45  const Agent *agent() const {return agent_;}
46  const std::vector<string> &active_tsn_servers() const {
47  return active_tsn_servers_;
48  }
50 
51 private:
52  bool IsTsnNoForwardingEnabled() const;
54  return static_cast<TsnElectorWalker *>(walker_.get());
55  }
56 
57  const Agent *agent_;
59  std::vector<std::string> active_tsn_servers_;
62 };
63 
64 #endif /* tsn_elector_agent_oper_hpp */
boost::intrusive_ptr< AgentRouteWalker > AgentRouteWalkerPtr
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge,...
Definition: agent_route.h:109
Agent * agent() const
Definition: agent.h:360
int ListenerId
Definition: db_table.h:62
DISALLOW_COPY_AND_ASSIGN(TsnElectorWalker)
virtual ~TsnElectorWalker()
Definition: tsn_elector.cc:37
void AcquireTsnMastership()
Definition: tsn_elector.cc:75
void LeaveTsnMastership()
Definition: tsn_elector.cc:70
TsnElectorWalker(const std::string &name, Agent *agent)
Definition: tsn_elector.cc:33
virtual bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e)
Definition: tsn_elector.cc:40
void Notify(DBTablePartBase *partition, DBEntryBase *e)
Definition: tsn_elector.cc:104
const std::vector< string > & active_tsn_servers() const
Definition: tsn_elector.h:46
DISALLOW_COPY_AND_ASSIGN(TsnElector)
TsnElector(Agent *agent)
Definition: tsn_elector.cc:80
AgentRouteWalkerPtr walker_
Definition: tsn_elector.h:60
bool IsMaster() const
Definition: tsn_elector.cc:176
virtual ~TsnElector()
Definition: tsn_elector.cc:87
const Agent * agent_
Definition: tsn_elector.h:57
void Shutdown()
Definition: tsn_elector.cc:167
std::vector< std::string > ManagedPhysicalDevicesList
Definition: tsn_elector.h:36
std::vector< std::string > active_tsn_servers_
Definition: tsn_elector.h:59
void Register()
Definition: tsn_elector.cc:95
bool IsTsnNoForwardingEnabled() const
Definition: tsn_elector.cc:90
TsnElectorWalker * walker()
Definition: tsn_elector.h:53
DBTable::ListenerId vrf_listener_id_
Definition: tsn_elector.h:58
void RouteNotify(DBTablePartBase *partition, DBEntryBase *e)
Definition: tsn_elector.cc:126
const ManagedPhysicalDevicesList & ManagedPhysicalDevices() const
Definition: tsn_elector.cc:183
const Agent * agent() const
Definition: tsn_elector.h:45
virtual ~TsnElectorState()
Definition: tsn_elector.cc:29
AgentRouteTable * inet4_table_
Definition: tsn_elector.h:17
TsnElectorState(AgentRouteTable *table, TsnElector *elector)
Definition: tsn_elector.cc:22
DBTable::ListenerId inet4_id_
Definition: tsn_elector.h:16