Exemplo n.º 1
0
        public static NngResult <ISendReceiveAsyncContext <T> > Create(IMessageFactory <T> factory, ISocket socket)
        {
            var context = new SendReceiveAsyncContext <T> {
                Factory = factory, Socket = socket
            };
            var res = context.InitAio();

            return(NngResult <ISendReceiveAsyncContext <T> > .OkIfZero(res, context));
        }
Exemplo n.º 2
0
 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));
     }
 }