Exemple #1
0
        private IEnumerable <Expression> __concurrentmain(CancellationToken __cancellation, Action <object> __success, Action <Exception> __failure)
        {
            for (;;)
            {
                var __expr5_var = new __expr5 {
                    Start = (___expr) =>
                    {
                        var __expr = (__expr5)___expr;
                        __listen("shave", () =>
                        {
                            __expr.__op5(true, null, null);
                        }

                                 );
                    }

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

                    , __start2 = (___expr) =>
                    {
                        var __expr = (__expr5)___expr;
                        __enter(() =>
                        {
                            __listen("tip", () =>
                            {
                                __expr.__op5(null, true, null);
                            }

                                     );
                        }

                                , __failure);
                    }
                };
                yield return(__expr5_var);

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

            {
                __dispatch("main");
                if (__success != null)
                {
                    __success(null);
                }
                yield break;
            }
        }
Exemple #2
0
        private IEnumerable <Expression> __concurrentacquire(philosopher owner, CancellationToken __cancellation, Action <object> __success, Action <Exception> __failure)
        {
            if (_owner != null)
            {
                {
                    var __expr5_var = new __expr5 {
                        Start = (___expr) =>
                        {
                            var __expr = (__expr5)___expr;
                            __listen("release", () =>
                            {
                                __expr.__op6(true, null, null);
                            }

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

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

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

            _owner = owner;
            {
                __dispatch("acquire");
                if (__success != null)
                {
                    __success(null);
                }
                yield break;
            }
        }
Exemple #3
0
        private IEnumerable <Expression> __concurrentreindeer(Reindeer r, CancellationToken __cancellation, Action <object> __success, Action <Exception> __failure)
        {
            _reindeer.Add(r);
            if (readyToDeliver())
            {
                //in case we're meeting with elves
                if (_busy)
                {
                    var __expr5_var = new __expr5 {
                        Start = (___expr) =>
                        {
                            var __expr = (__expr5)___expr;
                            __advance((__concurrentcancelMeeting(__cancellation, (__res) =>
                            {
                                __expr.__op9(true, null, null);
                            }

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

                                                                 )).GetEnumerator());
                        }

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

                        , __start5 = (___expr) =>
                        {
                            var __expr = (__expr5)___expr;
                            __enter(() =>
                            {
                                __listen("meetingCanceled", () =>
                                {
                                    __expr.__op9(null, true, null);
                                }

                                         );
                            }

                                    , __failure);
                        }
                    };
                    yield return(__expr5_var);

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

                //christmas!
                _busy = true;
                Console.WriteLine("Santa: Off to deliver toys!");
                {
                    var __expr6_var = new __expr6 {
                        Start = (___expr) =>
                        {
                            var __expr = (__expr6)___expr;
                            Task.Delay((int)((rand(5, 10)) * 1000)).ContinueWith(__task =>
                            {
                                __enter(() => __expr.__op10(true, null, null), (__ex) => __expr.__op10(false, null, __ex));
                            }

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

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

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

                Console.WriteLine("Santa: Merry Christmas, enjoy the toys!");
                //is over
                foreach (var rd in _reindeer)
                {
                    rd.unharness();
                }

                _reindeer.Clear();
                _busy = false;
                App.Stop();
            }

            {
                __dispatch("reindeer");
                if (__success != null)
                {
                    __success(null);
                }
                yield break;
            }
        }