コード例 #1
0
        public async ValueTask <OutgoingResponseFrame> DispatchAsync(
            IncomingRequestFrame request,
            Current current,
            CancellationToken cancel)
        {
            if (current.Operation == "opCompressArgs" || current.Operation == "opCompressArgsAndReturn")
            {
                if (request.PayloadEncoding == Encoding.V20)
                {
                    TestHelper.Assert(request.HasCompressedPayload == _compressed);
                    if (!_compressed)
                    {
                        // Ensure payload count is less than Ice.CompressionMinSize
                        TestHelper.Assert(request.PayloadSize < 1024);
                    }
                }
            }
            OutgoingResponseFrame response = await _servant.DispatchAsync(request, current, cancel);

            if (current.Operation == "opCompressReturn" || current.Operation == "opCompressArgsAndReturn")
            {
                if (response.PayloadEncoding == Encoding.V20)
                {
                    if (_compressed)
                    {
                        try
                        {
                            response.CompressPayload();
                            TestHelper.Assert(false);
                        }
                        catch (InvalidOperationException)
                        {
                            // Expected if the request is already compressed
                        }
                    }
                    else
                    {
                        // Ensure size is less than Ice.CompressionMinSize
                        TestHelper.Assert(response.PayloadSize < 1024);
                    }
                }
            }

            if (response.PayloadEncoding == Encoding.V20 && current.Operation == "opWithUserException")
            {
                try
                {
                    response.CompressPayload((CompressionFormat)2);
                    TestHelper.Assert(false);
                }
                catch (NotSupportedException)
                {
                    // expected.
                }

                response.CompressPayload();
            }
            return(response);
        }
コード例 #2
0
        public async ValueTask <OutgoingResponseFrame> DispatchAsync(IncomingRequestFrame request, Current current)
        {
            if (current.Operation == "opCompressParams" || current.Operation == "opCompressParamsAndReturn")
            {
                if (request.Encoding == Encoding.V2_0)
                {
                    TestHelper.Assert(request.HasCompressedPayload == _compressed);
                    if (!_compressed)
                    {
                        // Ensure size is less than Ice.CompressionMinSize
                        TestHelper.Assert(request.Size < 1024);
                    }
                }
            }
            OutgoingResponseFrame response = await _servant.DispatchAsync(request, current);

            if (current.Operation == "opCompressReturn" || current.Operation == "opCompressParamsAndReturn")
            {
                if (response.Encoding == Encoding.V2_0)
                {
                    if (_compressed)
                    {
                        try
                        {
                            response.CompressPayload();
                            TestHelper.Assert(false);
                        }
                        catch (InvalidOperationException)
                        {
                            // Expected if the request is already compressed
                        }
                    }
                    else
                    {
                        // Ensure size is less than Ice.CompressionMinSize
                        TestHelper.Assert(response.Size < 1024);
                    }
                }
            }

            if (response.Encoding == Encoding.V2_0 && current.Operation == "opWithUserException")
            {
                response.CompressPayload();
            }
            return(response);
        }