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