public static async Task B2CImage_ConveyB2CImageAsync(GrpcChannel channel, ConveyB2CImageRequest request)
        {
            try
            {
                var client = new B2CImage.B2CImageClient(channel);
                var reply  = await client.ConveyB2CImageAsync(new ConveyB2CImageRequest
                {
                    SalesMixId = request.SalesMixId,
                    Platform   = request.Platform,
                    ImageType  = request.ImageType,
                    Overwrite  = request.Overwrite
                }, deadline : DateTime.UtcNow.AddMinutes(2));

                Console.WriteLine("Response: " + JsonSerializer.Serialize(reply.Res));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemple #2
0
        static async Task Main(string[] args)
        {
            var config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
            var data   = new ConfigurationBuilder().AddJsonFile(@"JsonData\RPCData.json").Build();

            var            threadTime     = Convert.ToInt32(config.GetSection("TimeSeconds").Value);
            var            taskCount      = Convert.ToInt32(config.GetSection("TaskCount").Value);
            RPCServiceType rPCServiceType = (RPCServiceType)Convert.ToInt32(config.GetSection("Type").Value);

            Console.WriteLine($"Test RPCService Url : http://127.0.0.1:{Convert.ToInt32(config.GetSection("Port").Value)}");
            Console.WriteLine($"MillisecondsTime : {threadTime}");
            Console.WriteLine($"TaskCount : {taskCount}");
            Console.WriteLine($"RPCServiceType : {rPCServiceType}");

            AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            var channel = GrpcChannel.ForAddress($"http://127.0.0.1:{config.GetSection("Port").Value}");

            Task.Run(() =>
            {
                while (true)
                {
                    for (var i = 1; i <= taskCount; i++)
                    {
                        Task.Run(async() =>
                        {
                            lock (lockKey)
                            {
                                number = number + 1;
                            }

                            try
                            {
                                Console.WriteLine($"Start RBAC client run count : {number} , time = {DateTime.Now}");

                                switch (rPCServiceType)
                                {
                                case RPCServiceType.B2CImage:
                                    Console.WriteLine($"RPCServiceType : {rPCServiceType.ToString()}");

                                    var b2cImagerequest = new ConveyB2CImageRequest();
                                    data.GetSection("ConveyB2CImage").Bind(b2cImagerequest);

                                    B2CImageClient.B2CImage_ConveyB2CImageAsync(channel, b2cImagerequest);
                                    break;

                                case RPCServiceType.Media:
                                    Console.WriteLine($"RPCServiceType : {rPCServiceType.ToString()}");

                                    var mediarequest = new SaveFrontendIconRequest();
                                    data.GetSection("SaveFrontendIcon").Bind(mediarequest);

                                    var fileName = Path.GetFileName(mediarequest.FilePath);
                                    if (File.Exists(fileName))
                                    {
                                        MediaClient.Media_SaveFrontendIcon(channel, mediarequest);
                                    }
                                    else
                                    {
                                        Console.WriteLine($"File not found  : {fileName}");
                                    }
                                    break;

                                case RPCServiceType.B2EImage:
                                    var compressB2EImageRequest = new CompressB2EImageRequest();
                                    data.GetSection("CompressB2EImageRequest").Bind(compressB2EImageRequest);
                                    B2EImageClient.B2EImage_CompressB2EImageAsync(channel, compressB2EImageRequest);
                                    break;

                                default:
                                    Console.WriteLine($"RPCServiceType not found : {rPCServiceType}");
                                    break;
                                }
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine($"Ryn RBAC client exception : {ex}");
                            }
                        });
                    }
                    Thread.Sleep(threadTime);
                }
            });

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
            Console.WriteLine("RPC channel dispose");
            channel.Dispose();

            #region 範例
            // The port number(5001) must match the port of the gRPC server.

            //var httpClientHandler = new HttpClientHandler();
            //// Return `true` to allow certificates that are untrusted/invalid
            //httpClientHandler.ServerCertificateCustomValidationCallback =
            //    HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
            //var httpClient = new HttpClient(httpClientHandler);

            //using var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions { HttpClient = httpClient });
            //var client = new Greeter.GreeterClient(channel);
            //var reply = await client.SayHelloAsync(
            //                  new GrpcService.HelloRequest { Name = "GreeterClient" });
            //Console.WriteLine("Greeting: " + reply.Message);
            //Console.WriteLine("Press any key to exit...");
            //Console.ReadKey();
            #endregion
        }