23 #include "connection-manager.h"
25 #include "cid-factory.h"
26 #include "ss-record.h"
27 #include "mac-messages.h"
28 #include "ns3/pointer.h"
30 #include "service-flow.h"
31 #include "ss-net-device.h"
32 #include "bs-net-device.h"
38 NS_OBJECT_ENSURE_REGISTERED (ConnectionManager);
40 TypeId ConnectionManager::GetTypeId (
void)
42 static TypeId tid = TypeId (
"ns3::ConnectionManager")
43 .SetParent<Object> ();
47 ConnectionManager::ConnectionManager (
void)
57 ConnectionManager::~ConnectionManager (
void)
62 ConnectionManager::SetCidFactory (CidFactory *cidFactory)
64 m_cidFactory = cidFactory;
71 ssRecord->SetBasicCid (basicConnection->GetCid ());
74 ssRecord->SetPrimaryCid (primaryConnection->GetCid ());
76 rngrsp->SetBasicCid (basicConnection->GetCid ());
77 rngrsp->SetPrimaryCid (primaryConnection->GetCid ());
89 cid = m_cidFactory->Allocate (type);
109 m_basicConnections.push_back (connection);
112 m_primaryConnections.push_back (connection);
115 m_transportConnections.push_back (connection);
118 m_multicastConnections.push_back (connection);
129 std::vector<Ptr<WimaxConnection> >::const_iterator iter;
131 for (iter = m_basicConnections.begin (); iter != m_basicConnections.end (); ++iter)
133 if ((*iter)->GetCid () == cid)
139 for (iter = m_primaryConnections.begin (); iter != m_primaryConnections.end (); ++iter)
141 if ((*iter)->GetCid () == cid)
147 for (iter = m_transportConnections.begin (); iter != m_transportConnections.end (); ++iter)
149 if ((*iter)->GetCid () == cid)
158 std::vector<Ptr<WimaxConnection> >
161 std::vector<Ptr<WimaxConnection> > connections;
166 connections = m_basicConnections;
169 connections = m_primaryConnections;
172 connections = m_transportConnections;
183 ConnectionManager::GetNPackets (Cid::Type type, ServiceFlow::SchedulingType schedulingType)
const
185 uint32_t nrPackets = 0;
191 for (std::vector<
Ptr<WimaxConnection> >::const_iterator iter = m_basicConnections.begin (); iter
192 != m_basicConnections.end (); ++iter)
194 nrPackets += (*iter)->GetQueue ()->GetSize ();
200 for (std::vector<Ptr<WimaxConnection> >::const_iterator iter = m_primaryConnections.begin (); iter
201 != m_primaryConnections.end (); ++iter)
203 nrPackets += (*iter)->GetQueue ()->GetSize ();
209 for (std::vector<Ptr<WimaxConnection> >::const_iterator iter = m_transportConnections.begin (); iter
210 != m_transportConnections.end (); ++iter)
212 if (schedulingType == ServiceFlow::SF_TYPE_ALL || (*iter)->GetSchedulingType () == schedulingType)
214 nrPackets += (*iter)->GetQueue ()->GetSize ();
230 std::vector<Ptr<WimaxConnection> >::const_iterator iter;
231 for (iter = m_basicConnections.begin (); iter != m_basicConnections.end (); ++iter)
233 if ((*iter)->HasPackets ())
239 for (iter = m_primaryConnections.begin (); iter != m_primaryConnections.end (); ++iter)
241 if ((*iter)->HasPackets ())
247 for (iter = m_transportConnections.begin (); iter != m_transportConnections.end (); ++iter)
249 if ((*iter)->HasPackets ())
Ptr< WimaxConnection > GetConnection(Cid cid)
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_COMPONENT_DEFINE(name)
#define NS_FATAL_ERROR(msg)
fatal error handling
void AddConnection(Ptr< WimaxConnection > connection, Cid::Type type)
add a connection to the list of managed connections
bool HasPackets(void) const
void AllocateManagementConnections(SSRecord *ssRecord, RngRsp *rngrsp)
allocates the management connection for an ss record. This method is only used by BS ...
Ptr< WimaxConnection > CreateConnection(Cid::Type type)
create a connection of type type
std::vector< Ptr< WimaxConnection > > GetConnections(Cid::Type type) const
This class is used by the base station to store some information related to subscriber station in the...
Cid AllocateTransportOrSecondary(void)
This function returns the next Transport (or Secondary) CID.