Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : * Copyright Contributors to the OpenSDN project 4 : */ 5 : 6 : #include "ifmap/ifmap_node_proxy.h" 7 : 8 : #include "ifmap/ifmap_node.h" 9 : #include "ifmap/ifmap_table.h" 10 : 11 : using namespace std; 12 : 13 63835 : IFMapNodeProxy::IFMapNodeProxy() 14 63835 : : node_(NULL), id_(DBTable::kInvalidId) { 15 63835 : } 16 : 17 0 : IFMapNodeProxy::IFMapNodeProxy(IFMapNodeProxy *rhs) 18 0 : : node_(NULL), id_(DBTable::kInvalidId) { 19 0 : Swap(rhs); 20 0 : } 21 : 22 92983 : IFMapNodeProxy::IFMapNodeProxy(IFMapNode *node, DBTable::ListenerId lid) 23 92983 : : node_(node), id_(lid) { 24 92983 : node_->SetState(node_->table(), id_, this); 25 92983 : } 26 : 27 249801 : IFMapNodeProxy::~IFMapNodeProxy() { 28 156818 : if (node_ != NULL) { 29 81297 : node_->ClearState(node_->table(), id_); 30 : } 31 249801 : } 32 : 33 58949 : void IFMapNodeProxy::Swap(IFMapNodeProxy *rhs) { 34 58949 : swap(node_, rhs->node_); 35 58949 : swap(id_, rhs->id_); 36 58949 : if (node_ != NULL) { 37 58949 : node_->SetState(node_->table(), id_, this); 38 : } 39 58949 : if (rhs->node_ != NULL) { 40 0 : rhs->node_->SetState(rhs->node_->table(), rhs->id_, rhs); 41 : } 42 58949 : } 43 : 44 11686 : void IFMapNodeProxy::Clear() { 45 11686 : if (node_ != NULL) { 46 11686 : node_->ClearState(node_->table(), id_); 47 11686 : node_ = NULL; 48 11686 : id_ = DBTable::kInvalidId; 49 : } 50 11686 : }