Ejemplo n.º 1
0
        /// <summary>
        /// First creates promise and wraps it with a taskResultHandle.
        /// Then starts to listen for promise to resolve.
        /// Then enqueues task for a worker to execute task and resolve the promise.
        /// </summary>
        /// <param name="dotqApi"></param>
        /// <param name="task"></param>
        /// <typeparam name="TIn"></typeparam>
        /// <typeparam name="TOut"></typeparam>
        /// <returns></returns>
        public static ITaskResultHandle <TOut> Delay <TIn, TOut>(this DotqApi dotqApi, DotTask <TIn, TOut> task) // this method is written as extension method since I do not want DotqApi to be a generic class. It should be concrete
        {
            var handle = new PromiseTaskResultHandle <TOut>(task);

            handle.Listen(dotqApi._redisPromiseClient);
            dotqApi._taskQueue.Enqueue(task);
            return(handle);
        }
Ejemplo n.º 2
0
        public static ITaskResultHandle <TOut> Delay2 <TOut, TIn>(this DotqApi dotqApi, DotTask <TIn, TOut> task)
        {
            dotqApi._taskQueue.Enqueue(task);

            return(new PromiseTaskResultHandle <TOut>(task, dotqApi._redis));
        }
Ejemplo n.º 3
0
 public static PromiseTaskResultHandle <TOut> DelayHandle <TOut>(this DotqApi dotqApi, PromiseTaskResultHandle <TOut> handle)
 {
     handle.Listen(dotqApi._redisPromiseClient);
     handle.Queue(dotqApi._taskQueue);
     return(handle);
 }
Ejemplo n.º 4
0
        public static PromiseTaskResultHandle <TOut> Build <TIn, TOut>(this DotqApi dotqApi, DotTask <TIn, TOut> task, Action <TOut> onResolve = null)
        {
            var handle = new PromiseTaskResultHandle <TOut>(task, onResolve);

            return(handle);
        }