# HG changeset patch # User Gustavo J. A. M. Carneiro # Date 1213622247 -3600 # Node ID b0d91237f2ece658c15af56cb299882e58ce14ab # Parent eaa3a345b05e7090925b34331f318a98b0d2e86c [Bug 221] need a scratch directory diff -r eaa3a345b05e -r b0d91237f2ec scratch/multiple-sources/simple-main.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scratch/multiple-sources/simple-main.cc Mon Jun 16 14:17:27 2008 +0100 @@ -0,0 +1,9 @@ + +void RunSimulation (void); + +int main (int argc, char *argv[]) +{ + RunSimulation (); + + return 0; +} diff -r eaa3a345b05e -r b0d91237f2ec scratch/multiple-sources/simple-simulation.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scratch/multiple-sources/simple-simulation.cc Mon Jun 16 14:17:27 2008 +0100 @@ -0,0 +1,67 @@ +#include + +#include "ns3/core-module.h" +#include "ns3/helper-module.h" +#include "ns3/node-module.h" +#include "ns3/simulator-module.h" + +using namespace ns3; + +static void +GenerateTraffic (Ptr socket, uint32_t size) +{ + std::cout << "at=" << Simulator::Now ().GetSeconds () << "s, tx bytes=" << size << std::endl; + socket->Send (Create (size)); + if (size > 0) + { + Simulator::Schedule (Seconds (0.5), &GenerateTraffic, socket, size - 50); + } + else + { + socket->Close (); + } +} + +static void +SocketPrinter (Ptr socket) +{ + Ptr packet; + while (packet = socket->Recv ()) + { + std::cout << "at=" << Simulator::Now ().GetSeconds () << "s, rx bytes=" << packet->GetSize () << std::endl; + } +} + +static void +PrintTraffic (Ptr socket) +{ + socket->SetRecvCallback (MakeCallback (&SocketPrinter)); +} + +void +RunSimulation (void) +{ + NodeContainer c; + c.Create (1); + + InternetStackHelper internet; + internet.Install (c); + + + TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory"); + Ptr sink = Socket::CreateSocket (c.Get (0), tid); + InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80); + sink->Bind (local); + + Ptr source = Socket::CreateSocket (c.Get (0), tid); + InetSocketAddress remote = InetSocketAddress (Ipv4Address::GetLoopback (), 80); + source->Connect (remote); + + GenerateTraffic (source, 500); + PrintTraffic (sink); + + + Simulator::Run (); + + Simulator::Destroy (); +} diff -r eaa3a345b05e -r b0d91237f2ec scratch/simple.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scratch/simple.cc Mon Jun 16 14:17:27 2008 +0100 @@ -0,0 +1,74 @@ +#include + +#include "ns3/core-module.h" +#include "ns3/helper-module.h" +#include "ns3/node-module.h" +#include "ns3/simulator-module.h" + +using namespace ns3; + +static void +GenerateTraffic (Ptr socket, uint32_t size) +{ + std::cout << "at=" << Simulator::Now ().GetSeconds () << "s, tx bytes=" << size << std::endl; + socket->Send (Create (size)); + if (size > 0) + { + Simulator::Schedule (Seconds (0.5), &GenerateTraffic, socket, size - 50); + } + else + { + socket->Close (); + } +} + +static void +SocketPrinter (Ptr socket) +{ + Ptr packet; + while (packet = socket->Recv ()) + { + std::cout << "at=" << Simulator::Now ().GetSeconds () << "s, rx bytes=" << packet->GetSize () << std::endl; + } +} + +static void +PrintTraffic (Ptr socket) +{ + socket->SetRecvCallback (MakeCallback (&SocketPrinter)); +} + +void +RunSimulation (void) +{ + NodeContainer c; + c.Create (1); + + InternetStackHelper internet; + internet.Install (c); + + + TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory"); + Ptr sink = Socket::CreateSocket (c.Get (0), tid); + InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80); + sink->Bind (local); + + Ptr source = Socket::CreateSocket (c.Get (0), tid); + InetSocketAddress remote = InetSocketAddress (Ipv4Address::GetLoopback (), 80); + source->Connect (remote); + + GenerateTraffic (source, 500); + PrintTraffic (sink); + + + Simulator::Run (); + + Simulator::Destroy (); +} + +int main (int argc, char *argv[]) +{ + RunSimulation (); + + return 0; +} diff -r eaa3a345b05e -r b0d91237f2ec wscript --- a/wscript Sun Jun 15 21:38:13 2008 -0700 +++ b/wscript Mon Jun 16 14:17:27 2008 +0100 @@ -230,6 +230,19 @@ program.ns3_module_dependencies = ['ns3-'+dep for dep in dependencies] return program +def add_scratch_programs(bld): + all_modules = [mod[len("ns3-"):] for mod in bld.env()['NS3_MODULES']] + for filename in os.listdir("scratch"): + if os.path.isdir(os.path.join("scratch", filename)): + obj = bld.create_ns3_program(filename, all_modules) + obj.path = obj.path.find_dir('scratch') + obj.find_sources_in_dirs(filename) + obj.target = os.path.join(filename, filename) + elif filename.endswith(".cc"): + name = filename[:-len(".cc")] + obj = bld.create_ns3_program(name, all_modules) + obj.source = "scratch/%s" % filename + obj.target = "scratch/%s" % name def build(bld): if Params.g_options.no_task_lines: @@ -263,6 +276,8 @@ bld.add_subdirs('src') bld.add_subdirs('samples utils examples tutorial') + add_scratch_programs(bld) + ## if --enabled-modules option was given, we disable building the ## modules that were not enabled, and programs that depend on ## disabled modules.