Example #1
0
        public Task <TResult> Dispatch <TResult>(AbstractKey key, Func <IGrainContext, Task <TResult> > fn)
        {
            var placement = _placer(key);

            // one too many dispatchers, surely
            //
            //

            return(_innerDispatcher.Dispatch(placement, fn));
        }
Example #2
0
            Task Perform(Func <IStreamSink, Task> fn)
            {
                Dispatcher.Dispatch(Placement, c => Task.FromResult(true)) //should find receiver from IGrainContext and dispatch to it
                .SinkExceptions(Exceptions);

                //Requests.PerformAndForget(async () => {
                //    //var activation = await Grains.GetActivation(GrainKey);

                //    await Dispatcher.Dispatch(Placement, g => Task.FromResult(true)); //need to get observer from activation

                //    //AND FORGET ABOVE!

                //    //var observer = activation.StreamReceivers.Find(Key);

                //    //if(observer != null) {
                //    //    activation.Requests.PerformAndForget(() => fn(observer)); //should isolate with the activation default
                //    //}
                //});

                return(Task.CompletedTask);
            }