Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }