Example #1
0
        static IEnumerable <SimEvent> CondTester(SimEnvironment env)
        {
            var aProc = env.Process(AProcess(env));
            var cond  = env.AllOf(env.Timeout(5, "VAL_T"), aProc);

            yield return(cond);

            Console.WriteLine("ALL: {0}", cond.Value.Select(x => x.Value).Aggregate((s1, s2) => s1 + ", " + s2));

            aProc = env.Process(AProcess(env));
            cond  = env.AnyOf(env.Timeout(5, "VAL_T"), aProc);
            yield return(cond);

            Console.WriteLine("ANY: {0}", cond.Value.Select(x => x.Value).Aggregate((s1, s2) => s1 + ", " + s2));

            aProc = env.Process(AProcess(env));
            var aTime = env.Timeout(5, "VAL_T");
            ConditionEval <Timeout <string>, SimProcess> pred =
                c => c.Ev1.Succeeded && c.Ev2.Succeeded && c.Ev1.Value.Equals("VAL_T") && c.Ev2.Value.Equals("VAL_P");

            cond = env.Condition(aTime, aProc, pred);
            yield return(cond);

            Console.WriteLine("CUSTOM: {0}", cond.Value.Select(x => x.Value).Aggregate((s1, s2) => s1 + ", " + s2));
        }
Example #2
0
        static IEnumerable <SimEvent> Process(SimEnvironment env)
        {
            var t1 = env.Timeout(3);
            var t2 = env.Timeout(7);
            var c1 = env.AllOf(t1, t2);

            yield return(c1);

            Console.WriteLine(env.Now);               // 7
            Console.WriteLine(c1.Value.Contains(t1)); // True
            Console.WriteLine(c1.Value.Contains(t2)); // True

            t1 = env.Timeout(3);
            t2 = env.Timeout(7);
            var c2 = env.Condition(t1, t2, c => c.Ev1.Succeeded || c.Ev2.Succeeded);

            yield return(c2);

            Console.WriteLine(env.Now);               // 10
            Console.WriteLine(c2.Value.Contains(t1)); // True
            Console.WriteLine(c2.Value.Contains(t2)); // False
        }