示例#1
0
        async void HandleRequest(TcpClient client)
        {
            Console.WriteLine("Got connection!");
            try
            {
                var stream = client.GetStream();
                await SendFilters(stream);

                Console.WriteLine("Sent filters!");
                string name = await ReceiveFilterName(stream);

                Console.WriteLine($"Received filter name: {name.Trim()}");
                var kernel = Filters[name];
                int size   = await ReceiveSize(stream);

                Console.WriteLine($"Received image size: {size.ReadableSize()}");
                var image = await ReceiveImage(stream, size);

                Console.WriteLine("Received image!");
                var continuation = LightSwitch.Listening(stream);
                var result       = image.WithKernelApplied(kernel, OnProgressChanged(stream), continuation);
                Console.WriteLine("Calculated result!");
                if (result is Just <BasicImage> just)
                {
                    await SendImage(stream, just.Value, size);

                    Console.WriteLine("Sent result!");
                }
                else
                {
                    Console.WriteLine("Result is Nothing!");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"Got error while handling request: '{e}'");
            }

            Console.WriteLine("Done!");
        }