Example #1
0
        public object KNetDeserializeReference(byte[] data)
        {
            KNetRpcInfo res = null;

            using (MemoryStream ms = new MemoryStream(data)) {
                BinaryFormatter bf       = new BinaryFormatter();
                object[]        refer    = (object[])bf.Deserialize(ms);
                var             kNetView = (KNetView)KlivenNet.ZeroView.KNetDeserializeReference((byte[])refer[0]);
                res = kNetView.Rpcs[(short)refer[1]];
            }
            return(res);
        }
Example #2
0
        public static KNetRpcInfo CreateRpcInfo(short id, KNetView view, MethodInfo methodInfo)
        {
            KNetRpcInfo info = new KNetRpcInfo();
            var         args = methodInfo.GetParameters().OrderBy(e => e.Position);

            if (args.Where(e => KNetUtils.IsSerializable(e.ParameterType) == SerializableType.nonSerializable).Any())
            {
                return(null);
            }
            info.methodInfo            = methodInfo;
            info.Name                  = methodInfo.Name;
            info.ArgumentsInfo         = args.ToArray();
            info.ArgumentsTypes        = new Type[info.ArgumentsInfo.Length];
            info.ArgSerializationTypes = new SerializableType[info.ArgumentsInfo.Length];
            for (int i = 0; i < info.ArgumentsInfo.Length; i++)
            {
                info.ArgumentsTypes[i]        = info.ArgumentsInfo[i].ParameterType;
                info.ArgSerializationTypes[i] = KNetUtils.IsSerializable(info.ArgumentsTypes[i]);
            }
            info.Id       = id;
            info.kNetView = view;
            return(info);
        }
Example #3
0
 public KNetRpc(KNetRpcInfo rpcInfo, params object[] arguments)
 {
     this.RpcInfo   = rpcInfo;
     this.Arguments = arguments;
     this.Counts    = new int[arguments.Length];
 }