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 }