コード例 #1
0
        static void ForwardCall <T, TResult>(RpcContext <T> rpcCtx, RpcOutput <T> rpcOutput)
            where T : class
            where TResult : class
        {
            var rpc = rpcOutput.Call((object)null, rpcCtx, (object)null, rpcCtx.Data);

            rpc.Success <TResult>((self, ctx, userCtx, res) => ctx.SendSuccess(res));
            rpc.Failure((self, ctx, userCtx, ex) => ctx.SendFailure(ex));
        }
コード例 #2
0
        private byte[] SerializeOutputParametersAsArray()
        {
            int num = 0;

            object[] array = new object[this.outputParameters.Count * 2];
            foreach (KeyValuePair <RpcOutput, object> keyValuePair in this.outputParameters)
            {
                array[num++] = ExchangeCertificateRpc.SerializeObject(keyValuePair.Key);
                RpcOutput key = keyValuePair.Key;
                switch (key)
                {
                case RpcOutput.ExchangeCertList:
                    array[num++] = this.SerializeListAsArray <ExchangeCertificate>(keyValuePair.Value as List <ExchangeCertificate>);
                    break;

                case RpcOutput.ExchangeCert:
                    array[num++] = ExchangeCertificateRpc.SerializeObject(((ExchangeCertificate)keyValuePair.Value).ExchangeCertificateAsArray());
                    break;

                default:
                    switch (key)
                    {
                    case RpcOutput.TaskWarningList:
                        array[num++] = this.SerializeListAsArray <LocalizedString>(keyValuePair.Value as List <LocalizedString>);
                        break;

                    case RpcOutput.TaskConfirmationList:
                        array[num++] = this.SerializeDictionaryAsArray <AllowedServices, LocalizedString>(keyValuePair.Value as Dictionary <AllowedServices, LocalizedString>);
                        break;

                    default:
                        array[num++] = ExchangeCertificateRpc.SerializeObject(keyValuePair.Value);
                        break;
                    }
                    break;
                }
            }
            return(ExchangeCertificateRpc.SerializeObject(array));
        }
コード例 #3
0
        internal Dictionary <RpcOutput, object> BuildOutputParameters(byte[] blob)
        {
            Dictionary <RpcOutput, object> dictionary = new Dictionary <RpcOutput, object>();

            object[] array = (object[])this.DeserializeObject(blob, false);
            for (int i = 0; i < array.Length; i += 2)
            {
                RpcOutput rpcOutput = (RpcOutput)this.DeserializeObject((byte[])array[i], true);
                object    obj       = this.DeserializeObject((byte[])array[i + 1], true);
                if (obj != null)
                {
                    RpcOutput rpcOutput2 = rpcOutput;
                    switch (rpcOutput2)
                    {
                    case RpcOutput.ExchangeCertList:
                    {
                        List <ExchangeCertificate> list = new List <ExchangeCertificate>();
                        foreach (object obj2 in (object[])obj)
                        {
                            list.Add(new ExchangeCertificate((object[])this.DeserializeObject((byte[])obj2, true)));
                        }
                        obj = list;
                        break;
                    }

                    case RpcOutput.ExchangeCert:
                        obj = new ExchangeCertificate((object[])obj);
                        break;

                    default:
                        switch (rpcOutput2)
                        {
                        case RpcOutput.TaskWarningList:
                        {
                            List <LocalizedString> list2 = new List <LocalizedString>();
                            foreach (object obj3 in (object[])obj)
                            {
                                list2.Add((LocalizedString)this.DeserializeObject((byte[])obj3, true));
                            }
                            obj = list2;
                            break;
                        }

                        case RpcOutput.TaskConfirmationList:
                        {
                            object[] array4 = (object[])obj;
                            Dictionary <AllowedServices, LocalizedString> dictionary2 = new Dictionary <AllowedServices, LocalizedString>();
                            for (int l = 0; l < array4.Length; l += 2)
                            {
                                AllowedServices key   = (AllowedServices)this.DeserializeObject((byte[])array4[l], true);
                                LocalizedString value = (LocalizedString)this.DeserializeObject((byte[])array4[l + 1], true);
                                dictionary2[key] = value;
                            }
                            obj = dictionary2;
                            break;
                        }
                        }
                        break;
                    }
                }
                dictionary[rpcOutput] = obj;
            }
            return(dictionary);
        }