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