7 #include <ovsdb_types.h>
10 using namespace OVSDB;
11 using namespace process;
15 const std::string &device_name,
17 table_(table), device_name_(device_name), device_uuid_(u),
18 device_entry_(NULL), ha_stale_dev_vn_table_(NULL) {
38 if (!(*it)->IsDeleted()) {
66 : agent_(agent), table_(agent->physical_device_table()),
80 boost::uuids::nil_uuid());
81 pair<EntryMap::iterator, bool> ret;
82 ret =
entry_map_.insert(pair<string, ConnectionStateEntry*>(dev_name,
84 if (ret.second ==
false) {
94 EntryMap::iterator it =
entry_map_.find(dev_name);
98 it->second->idl_list_.erase(idl);
99 if (it->second->idl_list_.empty()) {
100 if (it->second->device_entry_ == NULL && it->second->refcount_ == 0) {
111 EntryMap::iterator it =
entry_map_.find(dev_name);
143 if (dev->
name().empty())
147 pair<EntryMap::iterator, bool> ret;
148 ret =
entry_map_.insert(pair<string, ConnectionStateEntry*>(dev->
name(),
150 if (ret.second ==
false) {
154 state = ret.first->second;
156 ret.first->second->device_entry_ = dev;
180 boost::asio::ip::tcp::endpoint ep;
182 ConnectionStateEntry::IdlList::iterator it =
184 ep.address((*it)->remote_ip());
185 ep.port((*it)->remote_port());
189 status = ConnectionStatus::DOWN;
190 message =
"Config Not Available";
192 status = ConnectionStatus::DOWN;
193 message =
"ToR Not Available";
195 message =
"Active sessions = " +
229 bool mastership =
true;
void intrusive_ptr_release(ConnectionStateEntry *p)
void PhysicalDeviceNotify(DBTablePartBase *part, DBEntryBase *e)
ConnectionStateTable(Agent *agent, OvsPeerManager *manager)
#define OVSDB_TRACE(obj,...)
void AddIdlToConnectionState(const std::string &device_name, OvsdbClientIdl *idl)
DBState * GetState(DBTableBase *tbl_base, ListenerId listener) const
AgentUveBase * uve() const
void intrusive_ptr_add_ref(ConnectionStateEntry *p)
void SetState(DBTableBase *tbl_base, ListenerId listener, DBState *state)
virtual ~ConnectionStateEntry()
PhysicalDevice * device_entry_
tbb::atomic< int > refcount_
void DelIdlToConnectionState(const std::string &device_name, OvsdbClientIdl *idl)
const boost::uuids::uuid & uuid() const
void Unregister(ListenerId listener)
void UpdateMastership(const boost::uuids::uuid &u, bool value)
void Delete(ConnectionType::type ctype, const std::string &name)
ListenerId Register(ChangeCallback callback, const std::string &name="unspecified")
static const std::string integerToString(const NumberType &num)
ConnectionStateTable * table_
ConnectionStateEntry(ConnectionStateTable *table, const std::string &device_name, const boost::uuids::uuid &u)
HaStaleDevVnTable * ha_stale_dev_vn_table_
void ClearState(DBTableBase *tbl_base, ListenerId listener)
void UpdateConnectionInfo(ConnectionStateEntry *entry, bool deleted)
ConnectionStateEntry * Find(const std::string &device_name)
void NotifyUve(ConnectionStateEntry *entry, bool deleted)
const std::string & name() const
ProuterUveTable * prouter_uve_table() const
OvsPeerManager * manager_
bool IsConnectionActive()
process::ConnectionState * connection_state() const
DBTableBase::ListenerId id_
virtual ~ConnectionStateTable()
boost::uuids::uuid device_uuid_