--- a/example/ccnx/dce-wifi-ccnx.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/example/ccnx/dce-wifi-ccnx.cc Wed Oct 15 15:12:07 2014 -0700 @@ -35,7 +35,6 @@ #include "ns3/dce-module.h" #include "ns3/rectangle.h" -#include "ns3/random-variable.h" --- a/helper/dce-manager-helper.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/helper/dce-manager-helper.cc Wed Oct 15 15:12:07 2014 -0700 @@ -5,7 +5,7 @@ #include "task-scheduler.h" #include "task-manager.h" #include "loader-factory.h" -#include "ns3/random-variable.h" +#include "ns3/random-variable-stream.h" #include "ns3/uinteger.h" #include "ns3/string.h" #include "ns3/config.h" @@ -24,8 +24,6 @@ namespace ns3 { -UniformVariable g_firstPid; - NS_OBJECT_ENSURE_REGISTERED (DceManagerHelper); TypeId @@ -111,7 +109,8 @@ taskManager->SetScheduler (scheduler); taskManager->SetDelayModel (delay); - manager->SetAttribute ("FirstPid", UintegerValue (g_firstPid.GetInteger (0, 0xffff))); + Ptr uv = CreateObject (); + manager->SetAttribute ("FirstPid", UintegerValue (uv->GetInteger (0, 0xffff))); Ptr node = *i; node->AggregateObject (taskManager); node->AggregateObject (loader); --- a/model/dce-manager.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/model/dce-manager.cc Wed Oct 15 15:12:07 2014 -0700 @@ -39,6 +39,7 @@ #include "ns3/ptr.h" #include "ns3/uinteger.h" #include "ns3/boolean.h" +#include "ns3/double.h" #include "ns3/trace-source-accessor.h" #include "ns3/enum.h" #include "file-usage.h" @@ -349,7 +350,9 @@ process->stdinFilename = stdinfilename; //"seeding" random variable - process->rndVarible = UniformVariable (0, RAND_MAX); + process->rndVariable = CreateObject (); + process->rndVariable->SetAttribute ("Min", DoubleValue (0)); + process->rndVariable->SetAttribute ("Max", DoubleValue (RAND_MAX)); process->nodeId = UtilsGetNodeId (); @@ -638,7 +641,9 @@ clone->penvp = thread->process->penvp; //"seeding" random variable - clone->rndVarible = UniformVariable (0, RAND_MAX); + clone->rndVariable = CreateObject (); + clone->rndVariable->SetAttribute ("Min", DoubleValue (0)); + clone->rndVariable->SetAttribute ("Max", DoubleValue (RAND_MAX)); m_processes[clone->pid] = clone; Thread *cloneThread = CreateThread (clone); --- a/model/dce-node-context.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/model/dce-node-context.cc Wed Oct 15 15:12:07 2014 -0700 @@ -25,6 +25,7 @@ #include "ns3/node.h" #include "ns3/node-list.h" #include "ns3/names.h" +#include "ns3/double.h" #include "utils.h" #include #include "process.h" @@ -51,8 +52,10 @@ } DceNodeContext::DceNodeContext () { - m_randomCtx = NormalVariable (0, 2 ^ 32 - 1); - m_rndBuffer = m_randomCtx.GetInteger (); + m_randomCtx = CreateObject (); + m_randomCtx->SetAttribute ("Mean", DoubleValue (0)); + m_randomCtx->SetAttribute ("Variance", DoubleValue (2 ^ 32 - 1)); + m_rndBuffer = m_randomCtx->GetInteger (); m_rndOffset = 0; } @@ -127,7 +130,7 @@ if (m_rndOffset >= 4) { m_rndOffset = 0; - m_rndBuffer = m_randomCtx.GetInteger (); + m_rndBuffer = m_randomCtx->GetInteger (); } return v; } --- a/model/dce-node-context.h Thu Oct 09 16:52:39 2014 +0900 +++ a/model/dce-node-context.h Wed Oct 15 15:12:07 2014 -0700 @@ -27,7 +27,7 @@ #include "ns3/traced-callback.h" #include "ns3/simulator.h" #include -#include "ns3/random-variable.h" +#include "ns3/random-variable-stream.h" extern "C" struct Libc; @@ -62,7 +62,7 @@ std::string m_release; std::string m_version; std::string m_hardId; - RandomVariable m_randomCtx; + Ptr m_randomCtx; uint32_t m_rndBuffer; uint8_t m_rndOffset; }; --- a/model/dce.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/model/dce.cc Wed Oct 15 15:12:07 2014 -0700 @@ -30,7 +30,6 @@ #include "ns3/log.h" #include "ns3/simulator.h" #include "ns3/names.h" -#include "ns3/random-variable.h" #include "ns3/ipv4-l3-protocol.h" #include "socket-fd-factory.h" @@ -330,12 +329,12 @@ long int dce_random (void) { Thread *current = Current (); - return current->process->rndVarible.GetInteger (); + return current->process->rndVariable->GetInteger (); } int dce_rand (void) { Thread *current = Current (); - return current->process->rndVarible.GetInteger (); + return current->process->rndVariable->GetInteger (); } unsigned short int * dce_seed48 (unsigned short int seed16v[3]) { --- a/model/kernel-socket-fd-factory.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/model/kernel-socket-fd-factory.cc Wed Oct 15 15:12:07 2014 -0700 @@ -78,9 +78,9 @@ MakeDoubleAccessor (&KernelSocketFdFactory::m_rate), MakeDoubleChecker ()) .AddAttribute ("RanVar", "The decision variable attached to this error model.", - RandomVariableValue (UniformVariable (0.0, 1.0)), - MakeRandomVariableAccessor (&KernelSocketFdFactory::m_ranvar), - MakeRandomVariableChecker ()) + StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=1.0]"), + MakePointerAccessor (&KernelSocketFdFactory::m_ranvar), + MakePointerChecker ()) ; return tid; } @@ -91,6 +91,7 @@ m_logFile (0) { TypeId::LookupByNameFailSafe ("ns3::LteUeNetDevice", &m_lteUeTid); + m_variable = CreateObject (); } KernelSocketFdFactory::~KernelSocketFdFactory () @@ -137,7 +138,7 @@ KernelSocketFdFactory::Malloc (struct SimKernel *kernel, unsigned long size) { KernelSocketFdFactory *self = (KernelSocketFdFactory *)kernel; - if (self->m_ranvar.GetValue () < self->m_rate) + if (self->m_ranvar->GetValue () < self->m_rate) { NS_LOG_DEBUG ("return null"); // Inject fault @@ -256,7 +257,7 @@ } u; for (uint8_t i = 0; i < sizeof (u.buffer); i++) { - u.buffer[i] = self->m_variable.GetInteger (0,255); + u.buffer[i] = self->m_variable->GetInteger (0,255); } return u.v; } --- a/model/kernel-socket-fd-factory.h Thu Oct 09 16:52:39 2014 +0900 +++ a/model/kernel-socket-fd-factory.h Wed Oct 15 15:12:07 2014 -0700 @@ -4,7 +4,7 @@ #include "socket-fd-factory.h" #include "task-manager.h" #include "ns3/net-device.h" -#include "ns3/random-variable.h" +#include "ns3/random-variable-stream.h" #include #include #include @@ -142,11 +142,11 @@ std::vector,struct SimDevice *> > m_devices; std::list m_kernelTasks; - UniformVariable m_variable; + Ptr m_variable; KingsleyAlloc *m_alloc; std::vector > m_listeners; double m_rate; - RandomVariable m_ranvar; + Ptr m_ranvar; uint16_t m_pid; TypeId m_lteUeTid; }; --- a/model/process-delay-model.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/model/process-delay-model.cc Wed Oct 15 15:12:07 2014 -0700 @@ -19,6 +19,8 @@ */ #include "process-delay-model.h" #include "ns3/log.h" +#include "ns3/string.h" +#include "ns3/pointer.h" #include #include @@ -45,9 +47,9 @@ .SetParent () .AddConstructor () .AddAttribute ("Variable", "Pick the process delay at random.", - RandomVariableValue (ConstantVariable (0.0)), - MakeRandomVariableAccessor (&RandomProcessDelayModel::m_variable), - MakeRandomVariableChecker ()) + StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"), + MakePointerAccessor (&RandomProcessDelayModel::m_variable), + MakePointerChecker ()) ; return tid; } @@ -57,8 +59,9 @@ } void -RandomProcessDelayModel::SetVariable (RandomVariable variable) +RandomProcessDelayModel::SetVariable (Ptr variable) { + m_variable = variable; } void @@ -68,7 +71,7 @@ Time RandomProcessDelayModel::RecordEnd (void) { - return Seconds (m_variable.GetValue ()); + return Seconds (m_variable->GetValue ()); } NS_OBJECT_ENSURE_REGISTERED (TimeOfDayProcessDelayModel); --- a/model/process-delay-model.h Thu Oct 09 16:52:39 2014 +0900 +++ a/model/process-delay-model.h Wed Oct 15 15:12:07 2014 -0700 @@ -21,7 +21,7 @@ #define PROCESS_DELAY_MODEL_H #include "ns3/object.h" -#include "ns3/random-variable.h" +#include "ns3/random-variable-stream.h" #include "ns3/nstime.h" namespace ns3 { @@ -42,13 +42,13 @@ RandomProcessDelayModel (); - void SetVariable (RandomVariable variable); + void SetVariable (Ptr variable); virtual void RecordStart (void); virtual Time RecordEnd (void); private: - RandomVariable m_variable; + Ptr m_variable; }; class TimeOfDayProcessDelayModel : public ProcessDelayModel --- a/model/process.h Thu Oct 09 16:52:39 2014 +0900 +++ a/model/process.h Wed Oct 15 15:12:07 2014 -0700 @@ -31,7 +31,7 @@ #include "ns3/event-id.h" #include "ns3/nstime.h" #include "unix-fd.h" -#include "ns3/random-variable.h" +#include "ns3/random-variable-stream.h" class KingsleyAlloc; @@ -188,7 +188,7 @@ // lifetime due to weirdness in the posix API. std::vector allocated; //random variable for rand and random implementation - RandomVariable rndVarible; + Ptr rndVariable; // srand48 seed struct drand48_data seed48Current; // Current umask --- a/myscripts/ccn-tap-vlc/dce-ccn-vlc.cc Thu Oct 09 16:52:39 2014 +0900 +++ a/myscripts/ccn-tap-vlc/dce-ccn-vlc.cc Wed Oct 15 15:12:07 2014 -0700 @@ -154,7 +154,7 @@ NetDeviceContainer devices = csma.Install (nodes); Ptr em = CreateObjectWithAttributes ( - "RanVar", RandomVariableValue (UniformVariable (0., 1.)), + "RanVar", StringValue("ns3::UniformRandomVariable[Min=0.|Max=1.]"), "ErrorRate", DoubleValue (0.00001)); // devices.Get (0)->SetAttribute ("ReceiveErrorModel", PointerValue (em));