diff -r f607815f38f9 -r 0b6bef4e99bc src/node/i-node.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/node/i-node.cc Mon May 14 09:09:43 2007 +0200 @@ -0,0 +1,132 @@ +// -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- +// +// Copyright (c) 2006 Georgia Tech Research Corporation +// All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation; +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Author: George F. Riley +// + +// Implement the basic Node object for ns3. +// George F. Riley, Georgia Tech, Fall 2006 + +#include "i-node.h" +#include "node-list.h" +#include "net-device.h" +#include "application.h" +#include "ns3/simulator.h" + +namespace ns3{ + +const InterfaceId Node::iid ("Node"); + +Node::Node() + : Interface (Node::iid), + m_id(0), + m_sid(0) +{ + m_id = NodeList::Add (this); +} + +Node::Node(uint32_t sid) + : Interface (Node::iid), + m_id(0), + m_sid(sid) +{ + m_id = NodeList::Add (this); +} + +Node::~Node () +{} + +TraceResolver * +Node::CreateTraceResolver (TraceContext const &context) +{ + return DoCreateTraceResolver (context); +} + +uint32_t +Node::GetId (void) const +{ + return m_id; +} + +uint32_t +Node::GetSystemId (void) const +{ + return m_sid; +} + +uint32_t +Node::AddDevice (Ptr device) +{ + uint32_t index = m_devices.size (); + m_devices.push_back (device); + DoAddDevice (device); + device->SetIfIndex(index); + return index; +} +Ptr +Node::GetDevice (uint32_t index) const +{ + return m_devices[index]; +} +uint32_t +Node::GetNDevices (void) const +{ + return m_devices.size (); +} + +uint32_t +Node::AddApplication (Ptr application) +{ + uint32_t index = m_applications.size (); + m_applications.push_back (application); + return index; +} +Ptr +Node::GetApplication (uint32_t index) const +{ + return m_applications[index]; +} +uint32_t +Node::GetNApplications (void) const +{ + return m_applications.size (); +} + + +void Node::DoDispose() +{ + for (std::vector >::iterator i = m_devices.begin (); + i != m_devices.end (); i++) + { + Ptr device = *i; + device->Dispose (); + *i = 0; + } + m_devices.clear (); + for (std::vector >::iterator i = m_applications.begin (); + i != m_applications.end (); i++) + { + Ptr application = *i; + application->Dispose (); + *i = 0; + } + m_applications.clear (); + Interface::DoDispose (); +} + +}//namespace ns3