public StreamStuff(IAPIFactory <INngMsg> factory) { var url = UrlIpc(); laio = factory.CreateAio().Unwrap(); daio = factory.CreateAio().Unwrap(); listener = factory.StreamListenerCreate(url).Unwrap(); dialer = factory.StreamDialerCreate(url).Unwrap(); laio.SetTimeout(Util.DelayShortMs); daio.SetTimeout(Util.DelayShortMs); listener.Listen().Unwrap(); listener.Accept(laio); dialer.Dial(daio); laio.Wait(); daio.Wait(); // Connected nng_stream is stored as aio output 0 and shouldn't be NULL Assert.NotEqual(IntPtr.Zero, laio.GetOutput(0)); Assert.NotEqual(IntPtr.Zero, daio.GetOutput(0)); lstream = factory.StreamFrom(laio).Unwrap(); dstream = factory.StreamFrom(daio).Unwrap(); }
protected NngResult <Unit> InitAio() { var res = NngAio.Create(callback); if (res.IsOk()) { Aio = res.Ok(); return(Unit.Ok); } else { return(Unit.Err(res.Err())); } }
public static NngResult <INngStream> From(INngAio aio) { var ptr = aio.GetOutput(0); if (ptr == IntPtr.Zero) { return(NngResult <INngStream> .Fail(-1)); } else { var stream = new Stream { stream = new nng_stream(ptr) }; return(NngResult <INngStream> .Ok(stream)); } }
public void Accept(INngAio aio) => nng_stream_listener_accept(listener, aio.NativeNngStruct);
public void Recv(INngAio aio) => nng_stream_recv(stream, aio.NativeNngStruct);
public void Send(INngAio aio) => nng_stream_send(stream, aio.NativeNngStruct);
public void Dial(INngAio aio) => nng_stream_dialer_dial(dialer, aio.NativeNngStruct);
public void Recv(INngAio aio) => nng_ctx_recv(NativeNngStruct, aio.NativeNngStruct);
public void Send(INngAio aio) => nng_ctx_send(NativeNngStruct, aio.NativeNngStruct);
public void Recv(INngAio aio) { nng_recv_aio(NativeNngStruct, aio.NativeNngStruct); }
public void Send(INngAio aio) { nng_send_aio(NativeNngStruct, aio.NativeNngStruct); }
public NngResult <INngStream> StreamFrom(INngAio aio) { return(Stream.From(aio)); }