Ejemplo n.º 1
0
 internal AltCallback(Scheduler sr, FromBeginEnd <X> xJ, Cont <X> xK, Pick pk, int me) : base(sr, xJ, xK)
 {
     this.pk = pk;
     this.me = me;
 }
Ejemplo n.º 2
0
 ///
 public ContIterate(X x, Cont <Y> yK)
 {
     this.Value = x; this.yK = yK;
 }
Ejemplo n.º 3
0
 internal override void DoWork(ref Worker wr)
 {
     Cont.Do(xK, ref wr, xJ.DoEnd(iar));
 }
Ejemplo n.º 4
0
 internal ParTuple(Cont <Tuple <A, B> > abK)
 {
     this.abK = abK;
 }
Ejemplo n.º 5
0
 internal override void DoJob(ref Worker wr, Cont <Unit> uK)
 {
     uK.DoWork(ref wr);
 }
Ejemplo n.º 6
0
Archivo: Tasks.cs Proyecto: silky/Hopac
 public State(Task task, Cont <Unit> uK)
 {
     this.task = task;
     this.uK   = uK;
 }
Ejemplo n.º 7
0
 public State(Task uT, Cont <Unit> uK, Scheduler sr)
 {
     this.uT = uT;
     this.uK = uK;
     this.sr = sr;
 }
Ejemplo n.º 8
0
 public TaskToAltAwaiter(CancellationTokenSource cts, Pick pk, int me, Task <X> xT, Cont <X> xK, Scheduler sr)
 {
     this.cts = cts;
     this.pk  = pk;
     this.me  = me;
     this.xT  = xT;
     this.xK  = xK;
     this.sr  = sr;
 }
Ejemplo n.º 9
0
 /// Internal implementation detail.
 internal override void DoJob(ref Worker wr, Cont <T> xK)
 {
     xK.DoCont(ref wr, this.value);
 }
Ejemplo n.º 10
0
Archivo: Async.cs Proyecto: mavnn/Hopac
 internal FromAsyncCont(Scheduler sr, Cont <X> xK)
 {
     this.sr = sr;
     this.xK = xK;
 }
Ejemplo n.º 11
0
 public TaskToJobAwaiter(Task <X> xT, Cont <X> xK, Scheduler sr)
 {
     this.xT = xT;
     this.xK = xK;
     this.sr = sr;
 }
Ejemplo n.º 12
0
Archivo: Async.cs Proyecto: mavnn/Hopac
 internal override void DoJob(ref Worker wr, Cont <Y> yK)
 {
     this.Start(new BindAsyncCont <X, Y>(wr.Scheduler, this, yK));
 }
Ejemplo n.º 13
0
Archivo: Async.cs Proyecto: mavnn/Hopac
 internal BindAsyncCont(Scheduler sr, BindAsync <X, Y> ba, Cont <Y> yK)
 {
     this.sr = sr;
     this.ba = ba;
     this.yK = yK;
 }
Ejemplo n.º 14
0
Archivo: Async.cs Proyecto: mavnn/Hopac
 internal override void DoJob(ref Worker wr, Cont <X> xK)
 {
     this.Start(new FromAsyncCont <X>(wr.Scheduler, xK));
 }
Ejemplo n.º 15
0
 internal override void DoJob(ref Worker wr, Cont <X> xK)
 {
     DoBegin(StaticData.workAsyncCallback, new JobCallback <X>(wr.Scheduler, this, xK));
 }
Ejemplo n.º 16
0
        internal override void DoJob(ref Worker wr, Cont <int> iK)
        {
TryNextTimed:
            var waitTicks = Timeout.Infinite;
            var tt = this.TopTimed;

            if (null == tt)
            {
                goto Return;
            }

            var tickCount = Environment.TickCount;

            waitTicks = tt.Ticks - tickCount;
            if (waitTicks > 0)
            {
                goto Return;
            }

            this.Lock.Enter();
            tt = this.TopTimed;
            if (null == tt)
            {
                goto ExitAndReturnWithInfinite;
            }

            waitTicks = tt.Ticks - tickCount;
            if (waitTicks > 0)
            {
                goto ExitAndReturn;
            }

            DropTimed();
            this.Lock.Exit();

            var pk = tt.Pick;

            if (null == pk)
            {
                goto GotIt;
            }

TryPick:
            var st = Pick.TryPick(pk);

            if (st > 0)
            {
                goto TryNextTimed;
            }
            if (st < 0)
            {
                goto TryPick;
            }

            Pick.SetNacks(ref wr, tt.Me, pk);

GotIt:
            Worker.Push(ref wr, tt);
            iK.DoCont(ref wr, 0);
            return;

ExitAndReturnWithInfinite:
            waitTicks = Timeout.Infinite;
ExitAndReturn:
            this.Lock.Exit();
Return:
            iK.DoCont(ref wr, waitTicks);
        }
Ejemplo n.º 17
0
Archivo: Tasks.cs Proyecto: silky/Hopac
 public State(Task <T> task, Cont <T> aK)
 {
     this.task = task;
     this.aK   = aK;
 }
Ejemplo n.º 18
0
 internal override void DoJob(ref Worker wr, Cont <Proc> pK)
 {
     Cont.Do(pK, ref wr, pK.GetProc(ref wr));
 }
Ejemplo n.º 19
0
 public State(Task <X> xT, Cont <X> xK, Scheduler sr)
 {
     this.xT = xT;
     this.xK = xK;
     this.sr = sr;
 }
Ejemplo n.º 20
0
 internal override void DoJob(ref Worker wr, Cont <Unit> uK)
 {
     // See Worker.RunOnThisThread to understand why this works.
     Worker.Push(ref wr, uK);
 }
Ejemplo n.º 21
0
 internal State(Scheduler sr, BindTask <Y> yJ, Cont <Y> yK)
 {
     this.sr = sr;
     this.yJ = yJ;
     this.yK = yK;
 }
Ejemplo n.º 22
0
 internal override void DoJob(ref Worker wr, Cont <Scheduler> sK)
 {
     Cont.Do(sK, ref wr, wr.Scheduler);
 }
Ejemplo n.º 23
0
 internal override void DoJob(ref Worker wr, Cont <T> xK)
 {
     Cont.Do(xK, ref wr, this.value);
 }
Ejemplo n.º 24
0
 internal JobCallback(Scheduler sr, FromBeginEnd <X> xJ, Cont <X> xK)
 {
     this.sr = sr;
     this.xJ = xJ;
     this.xK = xK;
 }
Ejemplo n.º 25
0
 internal override void DoJob(ref Worker wr, Cont <Unit> uK)
 {
     Work.Do(uK, ref wr);
 }
Ejemplo n.º 26
0
 public Cont <X> InternalInit(X x, Cont <Y> yK)
 {
     this.Value = x; this.yK = yK; return(this);
 }