A Discrete-Event Network Simulator
API
remote-channel-bundle.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright 2013. Lawrence Livermore National Security, LLC.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Steven Smith <smith84@llnl.gov>
19  *
20  */
21 
28 #ifndef NS3_REMOTE_CHANNEL_BUNDLE
29 #define NS3_REMOTE_CHANNEL_BUNDLE
30 
32 
33 #include <ns3/channel.h>
34 #include <ns3/ptr.h>
35 #include <ns3/pointer.h>
36 
37 #include <unordered_map>
38 
39 namespace ns3 {
40 
52 {
53 public:
58  static TypeId GetTypeId (void);
59 
62 
67  RemoteChannelBundle (const uint32_t remoteSystemId);
68 
71  {
72  }
73 
79  void AddChannel (Ptr<Channel> channel, Time delay);
80 
85  uint32_t GetSystemId () const;
86 
91  Time GetGuaranteeTime (void) const;
92 
99  void SetGuaranteeTime (Time time);
100 
105  Time GetDelay (void) const;
106 
113  void SetEventId (EventId id);
114 
119  EventId GetEventId (void) const;
120 
125  std::size_t GetSize (void) const;
126 
134  void Send(Time time);
135 
143  friend std::ostream& operator<< (std::ostream& out, ns3::RemoteChannelBundle& bundle );
144 
145 private:
148 
153  typedef std::unordered_map < uint32_t, Ptr < Channel > > ChannelMap;
163 
169 
172 
173 };
174 
175 }
176 
177 #endif
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::RemoteChannelBundle::Send
void Send(Time time)
Definition: remote-channel-bundle.cc:113
ns3::RemoteChannelBundle
Collection of ns-3 channels between local and remote nodes.
Definition: remote-channel-bundle.h:52
ns3::EventId
An identifier for simulation events.
Definition: event-id.h:54
ns3::RemoteChannelBundle::~RemoteChannelBundle
~RemoteChannelBundle()
Destructor.
Definition: remote-channel-bundle.h:70
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
third.channel
channel
Definition: third.py:92
ns3::RemoteChannelBundle::GetDelay
Time GetDelay(void) const
Get the minimum delay along any channel in this bundle.
Definition: remote-channel-bundle.cc:89
ns3::RemoteChannelBundle::m_nullEventId
EventId m_nullEventId
Event scheduled to send Null Message for this bundle.
Definition: remote-channel-bundle.h:171
ns3::RemoteChannelBundle::m_guaranteeTime
Time m_guaranteeTime
Guarantee time for the incoming Channels from MPI task remote_rank.
Definition: remote-channel-bundle.h:162
ns3::Ptr< Channel >
ns3::RemoteChannelBundle::SetEventId
void SetEventId(EventId id)
Set the event ID of the Null Message send event currently scheduled for this channel.
Definition: remote-channel-bundle.cc:95
ns3::RemoteChannelBundle::ChannelMap
std::unordered_map< uint32_t, Ptr< Channel > > ChannelMap
Container of channels that are connected from nodes in this MPI task to nodes in a remote rank.
Definition: remote-channel-bundle.h:153
ns3::RemoteChannelBundle::m_channels
ChannelMap m_channels
ChannelId to Channel map.
Definition: remote-channel-bundle.h:154
ns3::Object
A base class which provides memory management and object aggregation.
Definition: object.h:88
ns3::RemoteChannelBundle::AddChannel
void AddChannel(Ptr< Channel > channel, Time delay)
Add a channel to this bundle.
Definition: remote-channel-bundle.cc:62
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::RemoteChannelBundle::m_remoteSystemId
uint32_t m_remoteSystemId
Remote rank.
Definition: remote-channel-bundle.h:147
ns3::RemoteChannelBundle::operator<<
friend std::ostream & operator<<(std::ostream &out, ns3::RemoteChannelBundle &bundle)
Output for debugging purposes.
Definition: remote-channel-bundle.cc:118
ns3::RemoteChannelBundle::GetEventId
EventId GetEventId(void) const
Get the event ID of the Null Message send event for this bundle.
Definition: remote-channel-bundle.cc:101
ns3::RemoteChannelBundle::SetGuaranteeTime
void SetGuaranteeTime(Time time)
Definition: remote-channel-bundle.cc:81
ns3::RemoteChannelBundle::GetSize
std::size_t GetSize(void) const
Get the number of ns-3 channels in this bundle.
Definition: remote-channel-bundle.cc:107
ns3::RemoteChannelBundle::GetTypeId
static TypeId GetTypeId(void)
Register this type.
Definition: remote-channel-bundle.cc:38
ns3::RemoteChannelBundle::GetSystemId
uint32_t GetSystemId() const
Get the system Id for this side.
Definition: remote-channel-bundle.cc:69
ns3::RemoteChannelBundle::m_delay
Time m_delay
Delay for this Channel bundle, which is the min link delay over all incoming channels;.
Definition: remote-channel-bundle.h:168
ns3::RemoteChannelBundle::RemoteChannelBundle
RemoteChannelBundle()
Default constructor.
Definition: remote-channel-bundle.cc:47
null-message-simulator-impl.h
Declaration of class ns3::NullMessageSimulatorImpl.
ns3::RemoteChannelBundle::GetGuaranteeTime
Time GetGuaranteeTime(void) const
Get the current guarantee time for this bundle.
Definition: remote-channel-bundle.cc:75