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 63830 : IFMapNodeProxy::IFMapNodeProxy() 13 63830 : : node_(NULL), id_(DBTable::kInvalidId) { 14 63830 : } 15 : 16 0 : IFMapNodeProxy::IFMapNodeProxy(IFMapNodeProxy *rhs) 17 0 : : node_(NULL), id_(DBTable::kInvalidId) { 18 0 : Swap(rhs); 19 0 : } 20 : 21 94066 : IFMapNodeProxy::IFMapNodeProxy(IFMapNode *node, DBTable::ListenerId lid) 22 94066 : : node_(node), id_(lid) { 23 94066 : node_->SetState(node_->table(), id_, this); 24 94066 : } 25 : 26 251962 : IFMapNodeProxy::~IFMapNodeProxy() { 27 157896 : if (node_ != NULL) { 28 82382 : node_->ClearState(node_->table(), id_); 29 : } 30 251962 : } 31 : 32 58944 : void IFMapNodeProxy::Swap(IFMapNodeProxy *rhs) { 33 58944 : swap(node_, rhs->node_); 34 58944 : swap(id_, rhs->id_); 35 58944 : if (node_ != NULL) { 36 58944 : node_->SetState(node_->table(), id_, this); 37 : } 38 58944 : if (rhs->node_ != NULL) { 39 0 : rhs->node_->SetState(rhs->node_->table(), rhs->id_, rhs); 40 : } 41 58944 : } 42 : 43 11684 : void IFMapNodeProxy::Clear() { 44 11684 : if (node_ != NULL) { 45 11684 : node_->ClearState(node_->table(), id_); 46 11684 : node_ = NULL; 47 11684 : id_ = DBTable::kInvalidId; 48 : } 49 11684 : }