Example #1
0
        public void reindeer(Reindeer r, CancellationToken cancellation, Action <object> success, Action <Exception> failure)
        {
            var __success      = success;
            var __failure      = failure;
            var __cancellation = cancellation;

            __enter(() => __advance(__concurrentreindeer(r, __cancellation, __success, __failure).GetEnumerator()), failure);
        }
Example #2
0
        public Task <object> reindeer(Reindeer r, CancellationToken cancellation)
        {
            var                completion     = new TaskCompletionSource <object>();
            Action <object>    __success      = (__res) => completion.SetResult((object)__res);
            Action <Exception> __failure      = (__ex) => completion.SetException(__ex);
            var                __cancellation = cancellation;

            __enter(() => __advance(__concurrentreindeer(r, __cancellation, __success, __failure).GetEnumerator()), __failure);
            return(completion.Task);
        }
Example #3
0
 //a reindeer is ready for work
 public void reindeer(Reindeer r)
 {
     reindeer(r, default(CancellationToken), null, null);
 }
Example #4
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;
            }
        }