protected override IWampCancellableInvocation InnerInvoke <TMessage>(IWampRawRpcOperationRouterCallback caller, IWampFormatter <TMessage> formatter, InvocationDetails details, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords) { try { object result = InvokeSync(caller, formatter, details, arguments, argumentsKeywords, out IDictionary <string, object> outputs); CallResult(caller, result, outputs); } catch (WampException ex) { mLogger.ErrorFormat(ex, "An error occured while calling {ProcedureUri}", this.Procedure); IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(ex); } catch (Exception ex) { WampException wampException = ConvertExceptionToRuntimeException(ex); IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(wampException); } return(null); }
protected void HandleException(IWampRawRpcOperationRouterCallback caller, WampException ex) { mLogger.ErrorFormat(ex, "An error occurred while calling {ProcedureUri}", this.Procedure); IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(ex); }
protected void HandleException(IWampRawRpcOperationRouterCallback caller, Exception ex) { WampException wampException = ConvertExceptionToRuntimeException(ex); IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(wampException); }
protected override IWampCancellableInvocation InnerInvoke <TMessage>(IWampRawRpcOperationRouterCallback caller, IWampFormatter <TMessage> formatter, InvocationDetails options, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords) { CancellationTokenSourceInvocation result = null; try { CancellationToken token = CancellationToken.None; if (SupportsCancellation) { CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); result = new CancellationTokenSourceInvocation(cancellationTokenSource); token = cancellationTokenSource.Token; } Task <object> task = InvokeAsync(caller, formatter, options, arguments, argumentsKeywords, token); task.ContinueWith(x => TaskCallback(x, caller)); } catch (WampException ex) { mLogger.ErrorFormat(ex, "An error occured while calling {0}", this.Procedure); IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(ex); } return(result); }
private void TaskCallback(Task <object> task, IWampRawRpcOperationRouterCallback caller) { if (task.Exception == null) { object result = task.Result; CallResult(caller, result); } else { Exception innerException = task.Exception.InnerException; mLogger.ErrorFormat(innerException, "An error occured while calling {0}", this.Procedure); WampException wampException = innerException as WampException; if (wampException == null) { wampException = ConvertExceptionToRuntimeException(innerException); } IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(wampException); } }
protected override async void InnerInvoke <TMessage>(IWampRawRpcOperationRouterCallback caller, IWampFormatter <TMessage> formatter, InvocationDetails details, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords) { try { Task <object> task = InvokeAsync(caller, formatter, details, arguments, argumentsKeywords); object result = await task; CallResult(caller, result); } catch (Exception ex) { mLogger.ErrorFormat(ex, "An error occured while calling {ProcedureUri}", this.Procedure); WampException wampException = ex as WampException; if (wampException == null) { wampException = ConvertExceptionToRuntimeException(ex); } IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(wampException); } }
protected override void InnerInvoke <TMessage>(IWampRawRpcOperationRouterCallback caller, IWampFormatter <TMessage> formatter, InvocationDetails options, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords) { try { Task <object> task = InvokeAsync(caller, formatter, options, arguments, argumentsKeywords); task.ContinueWith(x => TaskCallback(x, caller)); } catch (WampException ex) { mLogger.ErrorFormat(ex, "An error occured while calling {0}", this.Procedure); IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(ex); } }
private async Task InnerInvokeAsync <TMessage>(IWampRawRpcOperationRouterCallback caller, IWampFormatter <TMessage> formatter, InvocationDetails details, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords, CancellationToken cancellationToken) { try { Task <object> task = InvokeAsync(caller, formatter, details, arguments, argumentsKeywords, cancellationToken); object result = await task.ConfigureAwait(false); CallResult(caller, result); } catch (Exception ex) { mLogger.ErrorFormat(ex, "An error occurred while calling {ProcedureUri}", this.Procedure); if (!(ex is WampException wampException)) { wampException = ConvertExceptionToRuntimeException(ex); } IWampErrorCallback callback = new WampRpcErrorCallback(caller); callback.Error(wampException); } }