Exemplo n.º 1
0
        internal static void CheckTimeouts()
        {
            while (responseAdded.Count > 0 && Time.time - responseAdded[responseAdded.Keys[0]] > pendingResponses[responseAdded.Keys[0]].Timeout)
            {
                ulong key = responseAdded.Keys[0];

                RpcResponseBase response = pendingResponses[key];
                response.IsDone       = true;
                response.IsSuccessful = false;

                Remove(key);
            }
        }
Exemplo n.º 2
0
        public void InvokeRequest_AmbiguousRequest_ErrorResponse()
        {
            RpcRequest stringRequest = new RpcRequest("1", "2.0", "AmbiguousMethod", 1);
            RpcRoute   route         = new RpcRoute();

            route.AddClass <TestRouteClass>();
            IRpcInvoker     invoker  = new DefaultRpcInvoker();
            RpcResponseBase response = invoker.InvokeRequest(stringRequest, route);

            RpcErrorResponse errorResponse = Assert.IsType <RpcErrorResponse>(response);

            Assert.NotNull(errorResponse.Error);
            Assert.Equal(errorResponse.Error.Code, (int)RpcErrorCode.AmbiguousMethod);
        }
Exemplo n.º 3
0
        public void InvokeRequest_AsyncMethod_Valid()
        {
            RpcRequest stringRequest = new RpcRequest("1", "2.0", "AddAsync", 1, 1);
            RpcRoute   route         = new RpcRoute();

            route.AddClass <TestRouteClass>();
            IRpcInvoker invoker = new DefaultRpcInvoker();

            RpcResponseBase response = invoker.InvokeRequest(stringRequest, route);

            RpcResultResponse resultResponse = Assert.IsType <RpcResultResponse>(response);

            Assert.NotNull(resultResponse.Result);
            Assert.Equal(resultResponse.Result, 2);
        }
Exemplo n.º 4
0
        public void InvokeRequest_Int64RequestParam_ConvertToInt32Param()
        {
            RpcRequest stringRequest = new RpcRequest("1", "2.0", "IntParameter", (long)1);
            RpcRoute   route         = new RpcRoute();

            route.AddClass <TestRouteClass>();
            IRpcInvoker invoker = new DefaultRpcInvoker();

            RpcResponseBase response = invoker.InvokeRequest(stringRequest, route);

            RpcResultResponse resultResponse = Assert.IsType <RpcResultResponse>(response);

            Assert.NotNull(resultResponse.Result);
            Assert.IsType <int>(resultResponse.Result);
            Assert.Equal(resultResponse.Result, 1);
        }
Exemplo n.º 5
0
        public void InvokeRequest_StringParam_ParseAsGuidType()
        {
            Guid       randomGuid    = Guid.NewGuid();
            RpcRequest stringRequest = new RpcRequest("1", "2.0", "GuidTypeMethod", randomGuid.ToString());

            RpcRoute route = new RpcRoute();

            route.AddClass <TestRouteClass>();
            IRpcInvoker     invoker        = new DefaultRpcInvoker();
            RpcResponseBase stringResponse = invoker.InvokeRequest(stringRequest, route);


            RpcResultResponse stringResultResponse = Assert.IsType <RpcResultResponse>(stringResponse);

            Assert.Equal(stringResultResponse.Result, randomGuid);
        }
Exemplo n.º 6
0
        internal static void HandleClientRPCResponse(ulong clientId, Stream stream)
        {
            using (PooledBitReader reader = PooledBitReader.Get(stream))
            {
                ulong responseId = reader.ReadUInt64Packed();

                if (ResponseMessageManager.ContainsKey(responseId))
                {
                    RpcResponseBase responseBase = ResponseMessageManager.GetByKey(responseId);

                    if (responseBase.ClientId != clientId)
                    {
                        return;
                    }

                    ResponseMessageManager.Remove(responseId);

                    responseBase.IsDone       = true;
                    responseBase.Result       = reader.ReadObjectPacked(responseBase.Type);
                    responseBase.IsSuccessful = true;
                }
            }
        }
Exemplo n.º 7
0
 internal static void Add(ulong key, RpcResponseBase value)
 {
     pendingResponses.Add(key, value);
     responseAdded.Add(key, Time.time);
 }