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 static NngResult <INngStreamListener> Alloc(string addr) { var listener = nng_stream_listener.Null; var res = nng_stream_listener_alloc(ref listener, addr); return(NngResult <INngStreamListener> .OkThen(res, () => new StreamListener() { listener = listener })); }
public static NngResult <INngStreamDialer> Alloc(string addr) { var dialer = nng_stream_dialer.Null; var res = nng_stream_dialer_alloc(ref dialer, addr); return(NngResult <INngStreamDialer> .OkThen(res, () => new StreamDialer() { dialer = dialer })); }
public static NngResult <INngAio> Create(AioCallback callback) { // Make a copy to ensure an automatically created delegate doesn't get GC'd while native code // is still using it: // https://stackoverflow.com/questions/6193711/call-has-been-made-on-garbage-collected-delegate-in-c // https://docs.microsoft.com/en-us/cpp/dotnet/how-to-marshal-callbacks-and-delegates-by-using-cpp-interop var res = nng_aio_alloc(out var aioHandle, callback, IntPtr.Zero); return(NngResult <INngAio> .OkThen(res, () => new NngAio { aioHandle = aioHandle, gcHandle = GCHandle.Alloc(callback) })); }
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); })); }
/// <summary> /// Create a subscribe socket /// </summary> /// <returns>The open.</returns> public static NngResult <ISubSocket> Open() { var res = nng_sub0_open(out var socket); return(NngResult <ISubSocket> .OkThen(res, () => new SubSocket { NativeNngStruct = socket })); }
public static NngResult <IStatRoot> GetStatSnapshot() { var res = nng_stats_get(out nng_stat statsp); return(NngResult <IStatRoot> .OkThen(res, () => new StatRoot { NngStat = statsp })); }
public NngResult <INngMsg> Dup() { var res = nng_msg_dup(out var msg, NativeNngStruct); return(NngResult <INngMsg> .OkThen(res, () => new NngMsg(msg))); }
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))); }
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))); }
/// <summary> /// Create a publish socket /// </summary> /// <returns>The open.</returns> public static NngResult <IPubSocket> Open() { int res = nng_pub0_open(out var socket); return(NngResult <IPubSocket> .OkThen(res, () => new PubSocket { NngSocket = socket })); }
/// <summary> /// Create a reply socket /// </summary> /// <returns>The open.</returns> public static NngResult <IRepSocket> Open() { var res = nng_rep0_open(out var socket); return(NngResult <IRepSocket> .OkThen(res, () => new RepSocket { NngSocket = socket })); }