public virtual Task <object> dispatchMessageToAsyncSingleListener(FunctionContext context, string functionName) { /*return Task.Run<T>(() => { * var result=dispatchMessageToSingleListener(context,functionName); * if (result!=null) return (T)result; * else return default(T); * }); */ if (listenerMapDataType.ContainsKey(context.type)) { AbstractListener ablistworker = getListener(functionName); if (ablistworker != null) { #if DEBUG Stopwatch timeOperations = Stopwatch.StartNew(); #endif try { Task <object> task; if (ablistworker.isAsyncMethod() || ablistworker.isYieldMethod()) { if (main.infoctx.DebugMode) { getLogger().Debug("Calling Async dispatch " + ablistworker.getName()); } task = ablistworker.addContextToGenericAsyncQueue(context); } else { if (main.infoctx.DebugMode) { getLogger().Debug("Calling Awaitable dispatch " + ablistworker.getName()); } task = Task.Run <object>(async() => { return(await ablistworker.addContextToGenericAsyncQueue(context)); }); } return(task); } finally { #if DEBUG timeOperations.Stop(); getLogger().Debug("Dispatched messageAsyc to " + ablistworker.getName() + " in " + timeOperations.ElapsedMilliseconds + "ms"); #endif } } else { getLogger().Warning("Not Found listener for function " + functionName); } } else { getLogger().Warning("Not Found listener for " + context.type); } return(null); }
public virtual Dictionary <string, Task <object> > dispatchMessageToAsyncListenersGetTasks(FunctionContext context) { Dictionary <string, Task <object> > tasksDict = new Dictionary <string, Task <object> >(); if (listenerMapDataType.ContainsKey(context.type)) { for (int i = 0; i < listenerMapDataType[context.type].Count; i++) { #if DEBUG Stopwatch timeOperations = Stopwatch.StartNew(); #endif AbstractListener ablistworker = (AbstractListener)listenerMapDataType[context.type][i]; try { Task <object> task; if (ablistworker.isAsyncMethod() || ablistworker.isYieldMethod()) { if (main.infoctx.DebugMode) { getLogger().Debug("Calling Async dispatch " + ablistworker.getName()); } task = ablistworker.addContextToGenericAsyncQueue(context); } else { if (main.infoctx.DebugMode) { getLogger().Debug("Calling Awaitable dispatch " + ablistworker.getName()); } task = Task.Run <object>(async() => { return(await ablistworker.addContextToGenericAsyncQueue(context)); }); } tasksDict.Add(ablistworker.getName(), task); } finally { #if DEBUG timeOperations.Stop(); getLogger().Debug("Dispatched MessageAsync to " + ablistworker.getName() + " in " + timeOperations.ElapsedMilliseconds + "ms"); #endif } } } else { getLogger().Warning("Not Found listener for " + context.type); } return(tasksDict); }