static async Task Main() { var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(); serviceCollection.AddNatsRpc(config => config.AddContractHandler <ITest, Test>()); var provider = serviceCollection.BuildServiceProvider(); var serviceHost = provider.GetRequiredService <IHostedService>(); var cts = new System.Threading.CancellationTokenSource(); var token = cts.Token; await serviceHost.StartAsync(token); var connectionFactory = new ConnectionFactory(); var proxyFactory = new ProxyFactory(connectionFactory); var proxy = proxyFactory.Create <ITest>(ProxyOptions.Default); var response = proxy.Echo("Hello World!"); System.Console.WriteLine($"Echo response: {response}"); proxy.Rpc("RPC", 100); var responseTask = proxy.EchoAsync("Hello World Async!"); System.Console.WriteLine($"Echo response: {await responseTask}"); await proxy.RpcAsync("Async RPC", 101); var model = new ITest.TestModel() { Name = "TEST" }; var echoModel = await proxy.EchoModel(model); System.Console.WriteLine($"Async echo model: {echoModel.Name}"); System.Console.ReadLine(); proxy.Dispose(); await serviceHost.StopAsync(token); cts.Cancel(); cts.Dispose(); }
public Task <ITest.TestModel> EchoModel(ITest.TestModel testModel) { return(Task.FromResult(testModel)); }