helper/dce-manager-helper.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue, 14 Sep 2010 12:41:32 +0200
changeset 0 0a55bed4c895
child 6 64c6f4f78c91
permissions -rw-r--r--
process -> dce
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
#include "dce-manager-helper.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
#include "ns3/dce-manager.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
#include "ns3/socket-fd-factory.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
#include "ns3/task-scheduler.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
#include "ns3/task-manager.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
#include "ns3/loader-factory.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
#include "ns3/random-variable.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
#include "ns3/uinteger.h"
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
namespace ns3 {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
UniformVariable g_firstPid;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
DceManagerHelper::DceManagerHelper ()
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
  m_loaderFactory.SetTypeId ("ns3::DlmLoaderFactory");
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
  m_taskManagerFactory.SetTypeId ("ns3::TaskManager");
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
  m_schedulerFactory.SetTypeId ("ns3::RrTaskScheduler");
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
  m_managerFactory.SetTypeId ("ns3::DceManager");
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
  m_networkStackFactory.SetTypeId ("ns3::Ns3SocketFdFactory");
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
DceManagerHelper::SetScheduler (std::string type, 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
				    std::string n0, const AttributeValue &v0,
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
				    std::string n1, const AttributeValue &v1)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
  m_schedulerFactory.SetTypeId (type);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
  m_schedulerFactory.Set (n0, v0);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
  m_schedulerFactory.Set (n1, v1);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
DceManagerHelper::SetTaskManagerAttribute (std::string n0, const AttributeValue &v0)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  m_taskManagerFactory.Set (n0, v0);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
DceManagerHelper::SetLoader (std::string type)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  m_loaderFactory.SetTypeId (type);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
DceManagerHelper::SetNetworkStack (std::string type,
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
				       std::string n0, const AttributeValue &v0)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  m_networkStackFactory.SetTypeId (type);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
  m_networkStackFactory.Set (n0, v0);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
void 
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
DceManagerHelper::SetAttribute (std::string n1, const AttributeValue &v1)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  m_managerFactory.Set (n1, v1);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
void
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
DceManagerHelper::Install (NodeContainer nodes)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
{
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
  for (NodeContainer::Iterator i = nodes.Begin (); i != nodes.End (); ++i)
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
    {
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
      Ptr<DceManager> manager = m_managerFactory.Create<DceManager> ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
      Ptr<TaskManager> taskManager = m_taskManagerFactory.Create<TaskManager> ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
      Ptr<TaskScheduler> scheduler = m_schedulerFactory.Create<TaskScheduler> ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
      Ptr<LoaderFactory> loader = m_loaderFactory.Create<LoaderFactory> ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
      Ptr<SocketFdFactory> networkStack = m_networkStackFactory.Create<SocketFdFactory> ();
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
      taskManager->SetScheduler (scheduler);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
      manager->SetAttribute ("FirstPid", UintegerValue (g_firstPid.GetInteger (0, 0xffff)));
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
      Ptr<Node> node = *i;
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
      node->AggregateObject (taskManager);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
      node->AggregateObject (loader);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
      node->AggregateObject (manager);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
      node->AggregateObject (networkStack);
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
    }
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
}
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
0a55bed4c895 process -> dce
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
} // namespace ns3