Beispiel #1
0
        public static void WriteMessage <T>(Stream stream, T message, HttpContextServerCallContext?callContext = null)
            where T : class, IMessage
        {
            var pipeWriter = PipeWriter.Create(stream);

            PipeExtensions.WriteMessageAsync(pipeWriter, message, callContext ?? HttpContextServerCallContextHelper.CreateServerCallContext(), (r, c) => c.Complete(r.ToByteArray()), canFlush: true).GetAwaiter().GetResult();
        }
        public static void WriteMessage <T>(Stream stream, T message, string?compressionEncoding = null, List <ICompressionProvider>?compressionProviders = null) where T : class, IMessage
        {
            compressionProviders = compressionProviders ?? new List <ICompressionProvider>
            {
                new GzipCompressionProvider(CompressionLevel.Fastest)
            };

            var resolvedProviders = ResolveProviders(compressionProviders);

            var pipeWriter = PipeWriter.Create(stream);

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers[GrpcProtocolConstants.MessageAcceptEncodingHeader] = compressionEncoding;

            var serverCallContext = HttpContextServerCallContextHelper.CreateServerCallContext(
                httpContext: httpContext,
                serviceOptions: new GrpcServiceOptions
            {
                ResponseCompressionAlgorithm = compressionEncoding,
                ResolvedCompressionProviders = resolvedProviders
            });

            serverCallContext.Initialize();

            PipeExtensions.WriteMessageAsync(pipeWriter, message, serverCallContext, (r, c) => c.Complete(r.ToByteArray()), canFlush: true).GetAwaiter().GetResult();
            stream.Seek(0, SeekOrigin.Begin);
        }
Beispiel #3
0
 public override ContentInfo Use(IThingGraphRepair source, ContentInfo sink)
 {
     if (Supports(source))
     {
         return(PipeExtensions.Use(source, sink, s => Use(s)));
     }
     return(null);
 }
Beispiel #4
0
        public static void WriteMessage <T>(Stream stream, T message) where T : IMessage
        {
            var messageData = message.ToByteArray();

            var pipeWriter = PipeWriter.Create(stream);

            PipeExtensions.WriteMessageAsync(pipeWriter, messageData, TestServerCallContext, flush: true).GetAwaiter().GetResult();
        }
        public static void WriteMessage <T>(Stream stream, T message) where T : IMessage
        {
            var messageData = message.ToByteArray();

            var pipeWriter = new StreamPipeWriter(stream);

            PipeExtensions.WriteMessageAsync(pipeWriter, messageData, TestServiceOptions, flush: true).GetAwaiter().GetResult();
        }
Beispiel #6
0
        public static void WriteMessage(Stream stream, byte[] message)
        {
            var pipeWriter = new StreamPipeWriter(stream);

            PipeExtensions.WriteMessageAsync(pipeWriter, message, flush: true).GetAwaiter().GetResult();
        }
Beispiel #7
0
 public void UsePipeWriter_WebSocket_ThrowsOnNull()
 {
     Assert.Throws <ArgumentNullException>(() => PipeExtensions.UsePipeWriter((WebSocket)null));
 }
Beispiel #8
0
        public static void WriteMessage <T>(Stream stream, T message) where T : IMessage
        {
            var pipeWriter = PipeWriter.Create(stream);

            PipeExtensions.WriteMessageAsync(pipeWriter, message, TestServerCallContext, (r, c) => c.Complete(r.ToByteArray()), canFlush: true).GetAwaiter().GetResult();
        }