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); }
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); }
//a reindeer is ready for work public void reindeer(Reindeer r) { reindeer(r, default(CancellationToken), null, null); }
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; } }