示例#1
0
        private IEnumerable <Expression> __concurrentthink(CancellationToken __cancellation, Action <object> __success, Action <Exception> __failure)
        {
            Console.WriteLine(_name + " is thinking");
            var __expr2_var = new __expr2 {
                Start = (___expr) =>
                {
                    var __expr = (__expr2)___expr;
                    Task.Delay((int)((rand(1.0, 2.0)) * 1000)).ContinueWith(__task =>
                    {
                        __enter(() => __expr.__op2(true, null, null), (__ex) => __expr.__op2(false, null, __ex));
                    }

                                                                            );
                }

                , End = (__expr) =>
                {
                    __enter(() => __advance(__expr.Continuator), __failure);
                }

                , __start1 = (___expr) =>
                {
                    var __expr = (__expr2)___expr;
                    __enter(() =>
                    {
                        __advance((__concurrenthungry(__cancellation, (__res) =>
                        {
                            __expr.__op2(null, true, null);
                        }

                                                      , (__ex) =>
                        {
                            __expr.__op2(null, false, __ex);
                        }

                                                      )).GetEnumerator());
                    }

                            , __failure);
                }
            };

            yield return(__expr2_var);

            if (__expr2_var.Failure != null)
            {
                throw __expr2_var.Failure;
            }
            {
                __dispatch("think");
                if (__success != null)
                {
                    __success(null);
                }
                yield break;
            }
        }
示例#2
0
        private IEnumerable <Expression> __concurrentFinished(CancellationToken __cancellation, Action <object> __success, Action <Exception> __failure)
        {
            {
                var __expr2_var = new __expr2 {
                    Start = (___expr) =>
                    {
                        var __expr = (__expr2)___expr;
                        __listen("done", () =>
                        {
                            __expr.__op2(true, null, null);
                        }

                                 );
                        __expr.__op2(null, false, null);
                    }

                    , End = (__expr) =>
                    {
                        __enter(() => __advance(__expr.Continuator), __failure);
                    }
                };
                yield return(__expr2_var);

                if (__expr2_var.Failure != null)
                {
                    throw __expr2_var.Failure;
                }
            }

            {
                __dispatch("Finished");
                if (__success != null)
                {
                    __success(null);
                }
                yield break;
            }
        }
示例#3
0
        private IEnumerable <Expression> __concurrentvisit(int client, CancellationToken __cancellation, Action <object> __success, Action <Exception> __failure)
        {
            if (_chairs == 0)
            {
                Console.WriteLine($"Client {client}: the place is full!");
            }
            else
            {
                Console.WriteLine($"Client: {client}, Barber1 {barber_status(0)},  Barber2: {barber_status(1)}");
                if (_busy[0] && _busy[1])
                {
                    _chairs--;
                    {
                        var __expr2_var = new __expr2 {
                            Start = (___expr) =>
                            {
                                var __expr = (__expr2)___expr;
                                __queuevisit.Enqueue(() => __expr.__op2(true, null, null));
                                __expr.__op2(null, false, null);
                            }

                            , End = (__expr) =>
                            {
                                __enter(() => __advance(__expr.Continuator), __failure);
                            }
                        };
                        yield return(__expr2_var);

                        if (__expr2_var.Failure != null)
                        {
                            throw __expr2_var.Failure;
                        }
                    }

                    _chairs++;
                }

                for (int i = 0; i < 2; i++)
                {
                    if (!_busy[i])
                    {
                        {
                            var __expr3_var = new __expr3 {
                                Start = (___expr) =>
                                {
                                    var __expr = (__expr3)___expr;
                                    __advance((__concurrentshave_client(client, i, __cancellation, (__res) =>
                                    {
                                        __expr.__op3(true, null, null);
                                    }

                                                                        , (__ex) =>
                                    {
                                        __expr.__op3(false, null, __ex);
                                    }

                                                                        )).GetEnumerator());
                                    __expr.__op3(null, false, null);
                                }

                                , End = (__expr) =>
                                {
                                    __enter(() => __advance(__expr.Continuator), __failure);
                                }
                            };
                            yield return(__expr3_var);

                            if (__expr3_var.Failure != null)
                            {
                                throw __expr3_var.Failure;
                            }
                        }

                        break;
                    }
                }

                if (__queuevisit.Any())
                {
                    __queuevisit.Dequeue()();
                }
            }

            _clients--;
            if (_clients == 0)
            {
                App.Stop();
            }

            {
                __dispatch("visit");
                if (__success != null)
                {
                    __success(null);
                }
                yield break;
            }
        }
示例#4
0
        private IEnumerable <Expression> __concurrentvacation(CancellationToken __cancellation, Action <object> __success, Action <Exception> __failure)
        {
            var __expr2_var = new __expr2 {
                Start = (___expr) =>
                {
                    var __expr = (__expr2)___expr;
                    Task.Delay((int)((rand(3, 7)) * 1000)).ContinueWith(__task =>
                    {
                        __enter(() => __expr.__op3(true, null, null), (__ex) => __expr.__op3(false, null, __ex));
                    }

                                                                        );
                }

                , End = (__expr) =>
                {
                    __enter(() => __advance(__expr.Continuator), __failure);
                }

                , __start1 = (___expr) =>
                {
                    var __expr = (__expr2)___expr;
                    __enter(() =>
                    {
                        _santa.reindeer(this, __cancellation, (__res) => __expr.__op4(true, null, null), (__ex) => __expr.__op4(false, null, __ex));
                        __listen("unharness", () =>
                        {
                            __expr.__op4(null, true, null);
                        }

                                 );
                    }

                            , __failure);
                }

                , __start2 = (___expr) =>
                {
                    var __expr = (__expr2)___expr;
                    __enter(() =>
                    {
                        try
                        {
                            Console.WriteLine(_name + ": back from vacation");
                            __expr.__op3(null, true, null);
                        }
                        catch (Exception __ex)
                        {
                            __expr.__op3(null, false, __ex);
                        }
                    }

                            , __failure);
                }
            };

            yield return(__expr2_var);

            if (__expr2_var.Failure != null)
            {
                throw __expr2_var.Failure;
            }
            {
                __dispatch("vacation");
                if (__success != null)
                {
                    __success(null);
                }
                yield break;
            }
        }
示例#5
0
        private IEnumerable <Runtime.Expression> __concurrentmain(Action <object> __success, Action <Exception> __failure)
        {
            var __expr1_var = new __expr1
            {
                Start = (___expr) =>
                {
                    var __expr = (__expr1)___expr;
                    __run(() =>
                    {
                        __listen("A", () =>
                        {
                            __expr.__op1(true, null, null);
                        }

                                 );
                        __expr.__op1(null, false, null);
                    }

                          , null, __failure);
                }

                ,
                End = (__expr) =>
                {
                    __run(() => __advance(__expr.Continuator), __success, __failure);
                }
            };

            yield return(__expr1_var);

            if (__expr1_var.Failure != null)
            {
                throw __expr1_var.Failure;
            }
            int val;
            var __expr2_var = new __expr2
            {
                Start = (___expr) =>
                {
                    var __expr = (__expr2)___expr;
                    __run(() =>
                    {
                        __concurrentC((__res) =>
                        {
                            __expr.val = (Int32)__res;
                            __expr.__op2(true, null, null);
                        }

                                      , (__ex) =>
                        {
                            __expr.__op2(false, null, __ex);
                        }

                                      );
                        __expr.__op2(null, false, null);
                    }

                          , null, __failure);
                }

                ,
                End = (__expr) =>
                {
                    __run(() => __advance(__expr.Continuator), __success, __failure);
                }
            };

            yield return(__expr2_var);

            if (__expr2_var.Failure != null)
            {
                throw __expr2_var.Failure;
            }
            val = __expr2_var.val;
            val++;
            {
                if (__success != null)
                {
                    try
                    {
                        __success(null);
                    }
                    catch
                    {
                    }
                }

                yield break;
            }
        }