1 module advanced; 2 3 import std.random : uniform; 4 import core.thread : Thread; 5 import std.stdio : writefln; 6 import std.datetime : dur; 7 8 import sdt : STAP_PROBE; 9 10 void main() @safe nothrow 11 { 12 try 13 { 14 const total = 200; 15 auto counter = 1; 16 while(true) 17 { 18 enum delay = 400; 19 const kind = uniform(0, 5); 20 21 switch (kind) 22 { 23 case 0: 24 mixin(STAP_PROBE!("advanced", "case0", kind)); 25 () @trusted { Thread.sleep(dur!"msecs"(uniform(delay, 3*delay))); } (); 26 mixin(STAP_PROBE!("advanced", "case0_return")); 27 break; 28 case 1: 29 mixin(STAP_PROBE!("advanced", "case1", kind)); 30 () @trusted { Thread.sleep(dur!"msecs"(uniform(delay, 3*delay))); } (); 31 mixin(STAP_PROBE!("advanced", "case1_return")); 32 break; 33 case 2: 34 mixin(STAP_PROBE!("advanced", "case2", kind)); 35 () @trusted { Thread.sleep(dur!"msecs"(uniform(delay, 3*delay))); } (); 36 mixin(STAP_PROBE!("advanced", "case2_return")); 37 break; 38 case 3: 39 mixin(STAP_PROBE!("advanced", "case3", kind)); 40 () @trusted { Thread.sleep(dur!"msecs"(uniform(delay, 3*delay))); } (); 41 mixin(STAP_PROBE!("advanced", "case3_return")); 42 break; 43 case 4: 44 mixin(STAP_PROBE!("advanced", "case4", kind)); 45 () @trusted { Thread.sleep(dur!"msecs"(uniform(delay, 3*delay))); } (); 46 mixin(STAP_PROBE!("advanced", "case4_return")); 47 break; 48 default: 49 assert(0); 50 } 51 writefln("%d:\tCase %d", counter, kind); 52 if (++counter > total) 53 break; 54 } 55 } 56 catch(Exception) 57 { 58 59 } 60 }