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