icerpc-csharp icon indicating copy to clipboard operation
icerpc-csharp copied to clipboard

Native Multiplexed Coloc

Open bernardnormier opened this issue 3 years ago • 4 comments

We should implement and provide a native multiplexed "coloc" transport, where we create 2 pipes for each multiplexed stream.

And then:

  • use this coloc transport for icerpc tests and various protocol-agnostics tests that require a connection, such as client-server Slice operation tests
  • ship this coloc transport to allow users to write their own (unit) tests with this transport
  • downgrade the existing simple transport "coloc" to an IceRpc test-only transport, used only for the testing of Slic and the ice protocol (e.g. IceProtocolConnection)

If a user wants to see how to implement a simple transport, he could browse the code of this simple coloc in our tests.

In ZeroC Ice, coloc is not a transport so this IceRpc "simple transport" does not provide any interop with ZeroC Ice. Once we have a multiplexed coloc, I don't see a reason to ship this "simple coloc" as a "real" transport.

bernardnormier avatar May 03 '22 20:05 bernardnormier

Implementing a new multiplexed transport is not trivial, given that Slic can work with a coloc simple transport isn't just simple to keep the simple coloc transport.

pepone avatar May 16 '22 13:05 pepone

The simple coloc transport is actually not trivial either 🙂. While it would be nice to have to go through the exercice of implementing another multiplexed transport, I don't think it's essential to have at this point. The multiplexed transport API might also change again the day the .NET Quic transport is released.

bentoi avatar May 17 '22 14:05 bentoi

@bernardnormier can we close this, I don't think is a high priority for 0.1?

pepone avatar Nov 17 '22 17:11 pepone

See #2118. Would be nice to do, but I also want to ship 0.1 ASAP.

For the name for this multiplexed coloc transport, I propose moloc, a mash of multiplexed and coloc.

bernardnormier avatar Nov 19 '22 04:11 bernardnormier