2 min read
Protocol connection
Understand how to create and use protocol connections.
The protocol connection abstraction
A server, a client connection and a connection cache all manage protocol connections. A protocol connection is an abstraction that:
- holds a transport connection such as a QUIC connection or a tcp connection
- implements an RPC protocol layer over this transport connection
In C#, this abstraction is the IProtocolConnection
interface:
C#
namespace IceRpc;
public interface IProtocolConnection : IInvoker, IAsyncDisposable{ Task<(TransportConnectionInformation ConnectionInformation, Task ShutdownRequested)> ConnectAsync( CancellationToken cancellationToken = default);
Task ShutdownAsync(CancellationToken cancellationToken = default);}
Even though it's public, a regular application should not use this API directly.
IceRPC provides two implementations of the protocol connection abstraction: ice and icerpc protocol connections.
Creating a protocol connection
In C#, you create a client protocol connection with a ClientProtocolConnectionFactory
. For example:
C#
var clientProtocolConnectionFactory = new ClientProtocolConnectionFactory(connectionOptions, logger: logger);await using var protocolConnection = clientProtocolConnectionFactory.CreateConnection(serverAddress);
This allows you to implement your own custom version of ClientConnection
or ConnectionCache
.
There is currently no public API to create server protocol connections; as a result, you can't create your own custom version of Server
.