mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2024-11-24 22:42:53 +01:00
33 lines
831 B
C#
33 lines
831 B
C#
using NetMQ;
|
|
using NetMQ.Sockets;
|
|
|
|
namespace Phantom.Utils.Rpc;
|
|
|
|
public static class RpcExtensions {
|
|
public static ReadOnlyMemory<byte> Receive(this ClientSocket socket, CancellationToken cancellationToken) {
|
|
var msg = new Msg();
|
|
msg.InitEmpty();
|
|
|
|
try {
|
|
socket.Receive(ref msg, cancellationToken);
|
|
return msg.SliceAsMemory();
|
|
} finally {
|
|
// Only releases references, so the returned ReadOnlyMemory is safe.
|
|
msg.Close();
|
|
}
|
|
}
|
|
|
|
public static (uint, ReadOnlyMemory<byte>) Receive(this ServerSocket socket, CancellationToken cancellationToken) {
|
|
var msg = new Msg();
|
|
msg.InitEmpty();
|
|
|
|
try {
|
|
socket.Receive(ref msg, cancellationToken);
|
|
return (msg.RoutingId, msg.SliceAsMemory());
|
|
} finally {
|
|
// Only releases references, so the returned ReadOnlyMemory is safe.
|
|
msg.Close();
|
|
}
|
|
}
|
|
}
|