public NngResult <IMessage> RecvMsg(Defines.NngFlag flags = default) { nng_msg message; var res = nng_recvmsg(NngSocket, out message, flags); return(NngResult <IMessage> .OkThen(res, () => new Message(message))); }
public NngResult <INngMsg> RecvMsg(Defines.NngFlag flags = default) { nng_msg message; var res = nng_recvmsg(NativeNngStruct, out message, flags); return(NngResult <INngMsg> .OkThen(res, () => new NngMsg(message))); }
public NngResult <Unit> SendZeroCopy(IMemory message, Defines.NngFlag flags = default) { // Unconditionally set NNG_FLAG_ALLOC for "zero-copy" send flags = flags | Defines.NngFlag.NNG_FLAG_ALLOC; var res = nng_send(NngSocket, message.Ptr, message.Length, flags); return(Unit.OkIfZero(res)); }
public NngResult <Unit> SendMsg(IMessage message, Defines.NngFlag flags = default) { var res = Unit.OkIfZero(nng_sendmsg(NngSocket, message.NngMsg, flags)); if (res.IsOk()) { // If call succeeds, nng takes ownership of message. var _ = message.Take(); } return(res); }
public NngResult <Unit> Send(ReadOnlySpan <byte> message, Defines.NngFlag flags = default) { unsafe { fixed(byte *ptr = &message[0]) { var res = nng_send(NngSocket, (IntPtr)ptr, (UIntPtr)message.Length, flags); return(Unit.OkIfZero(res)); } } }
public NngResult <Unit> SendZeroCopy(IMemory message, Defines.NngFlag flags = default) { // Unconditionally set NNG_FLAG_ALLOC for "zero-copy" send flags = flags | Defines.NngFlag.NNG_FLAG_ALLOC; var res = Unit.OkIfZero(nng_send(NngSocket, message.Ptr, message.Length, flags)); if (res.IsOk()) { // If call succeeds, nng takes ownership of message. message.Take(); } return(res); }
public NngResult <IMemory> RecvZeroCopy(Defines.NngFlag flags = default) { // Unconditionally set NNG_FLAG_ALLOC for "zero-copy" receive flags = flags | Defines.NngFlag.NNG_FLAG_ALLOC; var ptr = IntPtr.Zero; var size = UIntPtr.Zero; var res = nng_recv(NngSocket, ref ptr, ref size, flags); return(NngResult <IMemory> .OkThen(res, () => { System.Diagnostics.Debug.Assert(ptr != default && size != default); return Alloc.Create(ptr, size); })); }
public NngResult <UIntPtr> Recv(ref IMemory buffer, Defines.NngFlag flags = default) { if (flags.HasFlag(Defines.NngFlag.NNG_FLAG_ALLOC)) { var res = RecvZeroCopy(flags); return(res.Into <UIntPtr>(() => res.Ok().Length)); } else { if (buffer == null || buffer.Length == UIntPtr.Zero) { return(NngResult <UIntPtr> .Err(Defines.NngErrno.EMSGSIZE)); } var ptr = buffer.Ptr; var size = buffer.Length; var res = nng_recv(NngSocket, ref ptr, ref size, flags); return(NngResult <UIntPtr> .OkIfZero(res, size)); } }
public static extern unsafe Int32 nng_send(nng_socket socket, IntPtr data, UIntPtr size, Defines.NngFlag flags);
public NngResult <Unit> SendMsg(IMessage message, Defines.NngFlag flags = default) { return(Unit.OkIfZero(nng_sendmsg(NngSocket, message.NngMsg, flags))); }
public static int nng_listen(nng_socket socket, string url, Defines.NngFlag flags) { return(nng_listen(socket, url, IntPtr.Zero, flags)); }
public static extern int nng_listen(nng_socket socket, string url, out nng_listener listener, Defines.NngFlag flags);
public static extern Int32 nng_recvmsg(nng_socket socket, out nng_msg message, Defines.NngFlag flags);
public static extern int nng_dialer_start(nng_dialer dialer, Defines.NngFlag flags);
public static extern Int32 nng_recv(nng_socket socket, ref IntPtr data, ref UIntPtr size, Defines.NngFlag flags);
public static extern Int32 nng_sendmsg(nng_socket socket, nng_msg message, Defines.NngFlag flags);
public NngResult <Unit> Dial(string url, Defines.NngFlag flags = default) => Unit.OkIfZero(nng_dial(NngSocket, url, flags));
public static extern int nng_dial(nng_socket socket, string url, out nng_dialer dialer, Defines.NngFlag flags);
public NngResult <Unit> Listen(string url, Defines.NngFlag flags = default) => Unit.OkIfZero(nng_listen(NngSocket, url, flags));
static extern int nng_listen(nng_socket socket, string url, IntPtr not_used, Defines.NngFlag flags);
public NngResult <IListener> ListenWithListener(string url, Defines.NngFlag flags = default) { var res = nng_listen(NngSocket, url, out var listener, flags); return(NngResult <IListener> .OkThen(res, () => Listener.Create(listener))); }
public static extern int nng_listener_start(nng_listener listener, Defines.NngFlag flags);
public NngResult <IDialer> DialWithDialer(string url, Defines.NngFlag flags = default) { var res = nng_dial(NngSocket, url, out var dialer, flags); return(NngResult <IDialer> .OkThen(res, () => Dialer.Create(dialer))); }