コード例 #1
0
 /// <summary>
 /// 获取接口
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public T GetRPC <T>()
 {
     return(RPC_Call.GetRPC <T>());
 }
コード例 #2
0
 public void RegModule(object o)
 {
     RPC_Call.RegModule(o);
 }
コード例 #3
0
        public void BinaryInput(byte[] data)
        {
            ReadBytes read = new ReadBytes(data);

            int lengt;
            int cmd;

            if (read.ReadInt32(out lengt) && read.Length == lengt && read.ReadInt32(out cmd))
            {
                switch (cmd)
                {
                case 1001001:
                {
                    ZYClient_Result_Return val;

                    if (read.ReadObject <ZYClient_Result_Return>(out val))
                    {
                        RPC_Call.SetReturnValue(val);
                    }
                }
                break;

                case 1001000:
                {
                    RPCCallPack tmp;

                    if (read.ReadObject <RPCCallPack>(out tmp))
                    {
                        System.Threading.Tasks.Task.Factory.StartNew((pack) =>
                            {
                                CallContext.SetData("Current", this);
                                string msg;
                                object returnValue;
                                if (RPC_Call.RunModule(pack as RPCCallPack, out msg, out returnValue))
                                {
                                    ZYClient_Result_Return var = new ZYClient_Result_Return()
                                    {
                                        Id        = tmp.Id,
                                        CallTime  = tmp.CallTime,
                                        Arguments = tmp.Arguments
                                    };


                                    if (returnValue != null)
                                    {
                                        var.Return = Serialization.PackSingleObject(returnValue.GetType(), returnValue);
                                    }

                                    Client.BeginSendData(BufferFormat.FormatFCA(var));
                                }
                                else
                                {
                                    if (MsgOut != null)
                                    {
                                        MsgOut(tmp.CallModule + "->" + tmp.Method + " Call Failure");
                                    }
                                }
                            }, tmp, CancellationToken.None, TaskCreationOptions.None, OrderSchedulerRead).ContinueWith(task =>
                            {
                                try
                                {
                                    task.Wait();
                                }
                                catch (Exception er)
                                {
                                    if (MsgOut != null)
                                    {
                                        MsgOut(er.ToString());
                                    }
                                }
                            });
                    }
                }
                break;

                default:
                {
                    if (DataOn != null)
                    {
                        DataOn(cmd, read);
                    }
                }
                break;
                }
            }
        }
コード例 #4
0
 public void Call <Mode>(Expression <Action <Mode> > action)
 {
     RPC_Call.Call <Mode>(action);
 }
コード例 #5
0
        public void BinaryInput(byte[] data)
        {
            ReadBytes read = new ReadBytes(data);

            int lengt;
            int cmd;

            if (read.ReadInt32(out lengt) && read.Length == lengt && read.ReadInt32(out cmd))
            {
                switch (cmd)
                {
                case 1001001:
                {
                    Result_Have_Return val;

                    if (read.ReadObject <Result_Have_Return>(out val))
                    {
                        RPC_Call.SetReturnValue(val);
                    }
                }
                break;

                case 1001000:
                {
                    ThreadPool.QueueUserWorkItem((o) =>
                        {
                            RPCCallPack tmp;
                            ReadBytes pread = (ReadBytes)o;

                            if (pread.ReadObject <RPCCallPack>(out tmp))
                            {
                                object returnValue;

                                try
                                {
                                    if (RPC_Call.RunModule(tmp, tmp.NeedReturn, out returnValue))
                                    {
                                        if (tmp.NeedReturn)
                                        {
                                            Result_Have_Return var = new Result_Have_Return()
                                            {
                                                Id        = tmp.Id,
                                                Arguments = tmp.Arguments
                                            };

                                            if (returnValue != null)
                                            {
                                                var.Return = Serialization.PackSingleObject(returnValue.GetType(), returnValue);
                                            }

                                            Client.BeginSendData(BufferFormat.FormatFCA(var));
                                        }
                                    }
                                }
                                catch (Exception er)
                                {
                                    LogAction.Err(er.ToString());
                                }
                            }
                        }, read);
                }
                break;

                default:
                {
                    if (DataOn != null)
                    {
                        DataOn(cmd, read);
                    }
                }
                break;
                }
            }
        }
コード例 #6
0
 public Result Call <Mode, Result>(Expression <Func <Mode, Result> > action)
 {
     return(RPC_Call.Call <Mode, Result>(action));
 }
コード例 #7
0
 public void CallAsyn <Mode>(Expression <Action <Mode> > action, Action <AsynReturn> Callback)
 {
     RPC_Call.CallAsyn <Mode>(action, Callback);
 }
コード例 #8
0
 public void CallAsyn <Mode, Result>(Expression <Func <Mode, Result> > action, Action <AsynReturn> Callback)
 {
     RPC_Call.CallAsyn <Mode, Result>(action, Callback);
 }
コード例 #9
0
        public void BinaryInput(byte[] data)
        {
            ReadBytes read = new ReadBytes(data);

            int lengt;
            int cmd;

            if (read.ReadInt32(out lengt) && read.Length == lengt && read.ReadInt32(out cmd))
            {
                switch (cmd)
                {
                case 1001001:
                {
                    ZYClient_Result_Return val;

                    if (read.ReadObject <ZYClient_Result_Return>(out val))
                    {
                        RPC_Call.SetReturnValue(val);
                    }
                }
                break;

                case 1001000:
                {
                    ThreadPool.QueueUserWorkItem((o) =>
                        {
                            RPCCallPack tmp;
                            ReadBytes pread = (ReadBytes)o;

                            if (pread.ReadObject <RPCCallPack>(out tmp))
                            {
                                object returnValue;

                                CallContext.SetData("Current", this);

                                if (RPC_Call.RunModule(tmp, out returnValue))
                                {
                                    if (tmp.IsNeedReturn)
                                    {
                                        ZYClient_Result_Return var = new ZYClient_Result_Return()
                                        {
                                            Id        = tmp.Id,
                                            CallTime  = tmp.CallTime,
                                            Arguments = tmp.Arguments
                                        };

                                        if (returnValue != null)
                                        {
                                            var.Return     = Serialization.PackSingleObject(returnValue.GetType(), returnValue);
                                            var.ReturnType = returnValue.GetType();
                                        }

                                        Client.Send(BufferFormat.FormatFCA(var));
                                    }
                                }
                            }
                        }, read);
                }
                break;

                default:
                {
                    if (DataOn != null)
                    {
                        DataOn(cmd, read);
                    }
                }
                break;
                }
            }
        }
コード例 #10
0
        public void BinaryInput(byte[] data)
        {
            ReadBytes read = new ReadBytes(data);

            int lengt;
            int cmd;

            if (read.ReadInt32(out lengt) && read.Length == lengt && read.ReadInt32(out cmd))
            {
                switch (cmd)
                {
                case 1001001:
                {
                    ZYClient_Result_Return val;

                    if (read.ReadObject <ZYClient_Result_Return>(out val))
                    {
                        RPC_Call.SetReturnValue(val);
                    }
                }
                break;

                case 1001000:
                {
                    System.Threading.Tasks.Task.Factory.StartNew(() =>
                        {
                            RPCCallPack tmp;

                            if (read.ReadObject <RPCCallPack>(out tmp))
                            {
                                object returnValue;

                                CallContext.SetData("Current", this);

                                if (RPC_Call.RunModule(tmp, out returnValue))
                                {
                                    if (tmp.IsNeedReturn)
                                    {
                                        ZYClient_Result_Return var = new ZYClient_Result_Return()
                                        {
                                            Id        = tmp.Id,
                                            CallTime  = tmp.CallTime,
                                            Arguments = tmp.Arguments
                                        };

                                        if (returnValue != null)
                                        {
                                            var.Return     = Serialization.PackSingleObject(returnValue.GetType(), returnValue);
                                            var.ReturnType = returnValue.GetType();
                                        }

                                        Client.Send(BufferFormat.FormatFCA(var));
                                    }
                                }
                            }
                        }, CancellationToken.None, TaskCreationOptions.None, OrderSchedulerRead);
                }
                break;

                default:
                {
                    if (DataOn != null)
                    {
                        DataOn(cmd, read);
                    }
                }
                break;
                }
            }
        }