public static T InvokeSync <T>(string className, string methodName, object[] args, bool enableUnderFlowInspection) { T result = default(T); BackendlessFault backendlessFault = null; AutoResetEvent waiter = new AutoResetEvent(false); var responder = new Responder <T>(r => { result = r; waiter.Set(); }, f => { backendlessFault = new BackendlessFault(f); waiter.Set(); }); try { ResponseThreadConfigurator responseConfig = null; if (enableUnderFlowInspection) { responseConfig = new ResponseThreadConfigurator(SetupUnderFlowListener); } client.Invoke <T>(className, methodName, args, null, HeadersManager.GetInstance().Headers, responder, responseConfig); waiter.WaitOne(System.Threading.Timeout.Infinite); } catch (System.Exception ex) { throw new BackendlessException(ex.Message); } if (backendlessFault != null) { throw new BackendlessException(backendlessFault); } return(result); }
/// <summary> /// The invoke. /// </summary> /// <param name="args"> /// The args. /// </param> /// <returns> /// The <see cref="T"/>. /// </returns> /// <exception cref="Exception"> /// Exception when error is returned /// </exception> public Domain.Contracts.ServiceResponse <T> Invoke(params object[] args) { var lookupService = new WeborbClient(this.gateway, this.destination ?? "GenericDestination"); lookupService.Invoke(this.@class, this.method, args, new Responder <ServiceResponse>(this.GotResult, this.GotError)); this.executedCallBack.WaitOne(); if (this.fault != null) { throw new ApplicationException(string.Format("Message: " + this.fault.Message + ", Details: " + this.fault.Detail)); } return(this.result); }