Deadline interceptor and middleware for IceRPC
$ dotnet add package IceRpc.DeadlineIceRpc.Deadline provides an IceRPC interceptor and the corresponding middleware.
The deadline interceptor adds deadline fields to outgoing requests, while the deadline middleware decodes deadline fields received with incoming requests.
Source code | Package | Example | API reference | Interceptor documentation | Middleware documentation
// Client application
using IceRpc;
await using var connection = new ClientConnection(new Uri("icerpc://localhost"));
// Add the deadline interceptor to the invocation pipeline.
Pipeline pipeline = new Pipeline()
.UseDeadline(TimeSpan.FromSeconds(20))
.Into(connection);
// Server application
using IceRpc;
// Add the deadline middleware to the dispatch pipeline.
Router router = new Router()
.UseDeadline();
.Map<...>(...);
await using var server = new Server(router);
server.Listen();
// Client application
using IceRpc;
using IceRpc.Extensions.DependencyInjection;
var hostBuilder = Host.CreateDefaultBuilder(args);
hostBuilder.ConfigureServices(services =>
services
.AddIceRpcClientConnection(new Uri("icerpc://localhost"))
.AddIceRpcInvoker(builder =>
builder
// Add the deadline interceptor to the invocation pipeline.
.UseDeadline(TimeSpan.FromSeconds(20))
.Into<ClientConnection>()));
using var host = hostBuilder.Build();
host.Run();
// Server application
using IceRpc;
using IceRpc.Extensions.DependencyInjection;
var hostBuilder = Host.CreateDefaultBuilder(args);
hostBuilder.ConfigureServices(services =>
services
.AddIceRpcServer(builder =>
builder
// Add the deadline middleware to the dispatch pipeline.
.UseDeadline()
.Map<...>()));
using var host = hostBuilder.Build();
host.Run();