public Activity(string name, int numIterations, IExecutive executive, RandomServer rs, ulong seed) { m_name = name; m_numIterations = numIterations; m_rc = rs.GetRandomChannel(seed, m_defaultBufferSize); executive.ExecutiveStarted += delegate(IExecutive exec) { exec.RequestEvent(Run, exec.Now, 0.0, null, ExecEventType.Detachable); }; }
void Executive_ExecutiveStarted_SingleShot2(IExecutive exec) { RandomServer r = new RandomServer(12345, 1000); Randoms.IRandomChannel rc = r.GetRandomChannel(98765, 1000); double howMuch = 0.0; DateTime when = new DateTime(2008, 08, 01, 12, 00, 00); for (int i = 0; i < 1000; i++) { int key = rc.Next(0, 2); int deltaT = rc.Next(0, 2); howMuch = rc.NextDouble() * 100.0; switch (key) { case 0: m_howMuchPut += howMuch; Console.WriteLine("{0} : Add {1} kg.", when, howMuch); AddSomeMaterial(when, m_mt1.CreateMass(howMuch, AMBIENT_TEMPERATURE)); break; case 1: m_howMuchRetrieved += howMuch; Console.WriteLine("{0} : Try to remove {1} kg.", when, howMuch); RequestMaterial(when, howMuch); break; case 2: Console.WriteLine("{0} : Confirm bookkeeping.", when); ConfirmTotlMass(when); break; default: break; } when += TimeSpan.FromMinutes(deltaT); } // Now, if there are outstanding requests, satisfy them. howMuch = m_howMuchRetrieved - m_howMuchPut; if (howMuch > 0) { Console.WriteLine("{0} : Add {1} kg.", when, howMuch); AddSomeMaterial(when, m_mt1.CreateMass(howMuch, AMBIENT_TEMPERATURE)); } m_howMuchPut = 0.0; m_howMuchRetrieved = 0.0; Console.WriteLine("Starting Test..."); }
public static void Run() { RandomServer rs = null; IExecutive exec = null; Activity fooActivity = null; Activity barActivity = null; int defaultBufferSize = 100; foreach (ulong hyperSeed in new ulong[] { 87654, 23456 }) { Console.WriteLine("Test with hyperSeed of {0}.", hyperSeed); rs = new RandomServer(hyperSeed, defaultBufferSize); exec = ExecFactory.Instance.CreateExecutive(); fooActivity = new Activity("fooActivity", 5, exec, rs, 12345); barActivity = new Activity("barActivity", 6, exec, rs, 10558); exec.Start(); } ulong _hyperSeed = 24680; Console.WriteLine("Test with hyperSeed of {0}. First, with no interference:", _hyperSeed); rs = new RandomServer(_hyperSeed, defaultBufferSize); exec = ExecFactory.Instance.CreateExecutive(); fooActivity = new Activity("fooActivity", 5, exec, rs, 12345); barActivity = new Activity("barActivity", 6, exec, rs, 10558); exec.Start(); exec.Reset(); Console.WriteLine("Test with hyperSeed of {0}. This time, we interfere with Bobby:", _hyperSeed); rs = new RandomServer(_hyperSeed, defaultBufferSize); exec = ExecFactory.Instance.CreateExecutive(); fooActivity = new Activity("fooActivity", 5, exec, rs, 12345); barActivity = new Activity("barActivity", 6, exec, rs, 10558); DateTime when = DateTime.Parse("1/1/0001 7:13:29 AM"); exec.RequestEvent( delegate(IExecutive _exec, object userData) { Console.WriteLine("{0} : Doubling barActivity's multiplier.", _exec.Now); barActivity.Multiplier = 2.0; }, when); exec.Start(); }
public HistorianTester() { m_rs = new RandomServer(); }