コード例 #1
0
ファイル: Msg.cs プロジェクト: awesomedotnetcore/nng.NETCore
 public static Span <byte> nng_msg_body_span(nng_msg message)
 {
     unsafe
     {
         return(new Span <byte>(nng_msg_body(message), (int)nng_msg_len(message)));
     }
 }
コード例 #2
0
        internal void callback(IntPtr arg)
        {
            var res = 0;

            switch (State)
            {
            case AsyncState.Init:
                State = AsyncState.Recv;
                nng_recv_aio(Socket.NngSocket, aioHandle);
                break;

            case AsyncState.Recv:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    State = AsyncState.Init;
                    asyncMessage.Source.Tcs.TrySetNngError(res);
                    return;
                }
                State = AsyncState.Init;
                nng_msg msg     = nng_aio_get_msg(aioHandle);
                var     message = Factory.CreateMessage(msg);
                asyncMessage.Source.Tcs.SetResult(message);
                break;

            default:
                asyncMessage.Source.Tcs.SetException(new Exception(State.ToString()));
                break;
            }
        }
コード例 #3
0
        protected override void AioCallback(IntPtr argument)
        {
            var res = Unit.Ok;

            switch (State)
            {
            case AsyncState.Recv:
                res = Aio.GetResult();
                if (res.IsErr())
                {
                    State = AsyncState.Init;
                    tcs.TrySetNngError(res.Err());
                    return;
                }
                State = AsyncState.Init;
                nng_msg msg     = Aio.GetMsg();
                var     message = Factory.CreateMessage(msg);
                tcs.TrySetResult(NngResult <T> .Ok(message));
                break;

            case AsyncState.Init:
            default:
                tcs.TrySetException(new Exception(State.ToString()));
                break;
            }
        }
コード例 #4
0
        protected override void AioCallback(IntPtr argument)
        {
            var res = 0;

            switch (State)
            {
            case AsyncState.Recv:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    State = AsyncState.Init;
                    tcs.TrySetNngError(res);
                    return;
                }
                State = AsyncState.Init;
                nng_msg msg     = nng_aio_get_msg(aioHandle);
                var     message = Factory.CreateMessage(msg);
                tcs.TrySetResult(NngResult <T> .Ok(message));
                break;

            case AsyncState.Init:
            default:
                tcs.TrySetException(new Exception(State.ToString()));
                break;
            }
        }
コード例 #5
0
ファイル: Msg.cs プロジェクト: awesomedotnetcore/nng.NETCore
 public static Int32 nng_msg_append(nng_msg message, ReadOnlySpan <byte> data)
 {
     unsafe
     {
         fixed(byte *ptr = &data[0])
         {
             return(nng_msg_append(message, ptr, (UIntPtr)data.Length));
         }
     }
 }
コード例 #6
0
        internal void callback(IntPtr arg)
        {
            lock (sync)
            {
                var res = 0;
                switch (State)
                {
                case AsyncState.Init:
                    init();
                    break;

                case AsyncState.Recv:
                    res = nng_aio_result(aioHandle);
                    if (res != 0)
                    {
                        asyncMessage.requestTcs.TrySetNngError(res);
                        State = AsyncState.Recv;
                        return;
                    }
                    State = AsyncState.Wait;
                    nng_msg msg     = nng_aio_get_msg(aioHandle);
                    var     message = Factory.CreateMessage(msg);
                    asyncMessage.requestTcs.SetResult(message);
                    break;

                case AsyncState.Wait:
                    nng_aio_set_msg(aioHandle, Factory.Borrow(asyncMessage.response));
                    State = AsyncState.Send;
                    nng_ctx_send(ctxHandle, aioHandle);
                    break;

                case AsyncState.Send:
                    res = nng_aio_result(aioHandle);
                    if (res != 0)
                    {
                        Factory.Destroy(ref asyncMessage.response);
                        asyncMessage.replyTcs.TrySetNngError(res);
                    }
                    var currentReq = asyncMessage;
                    init();
                    currentReq.replyTcs.SetResult(true);
                    break;
                }
            }
        }
コード例 #7
0
ファイル: SurveyAsync.cs プロジェクト: liviaerxin/nng.NETCore
        protected override void AioCallback(IntPtr argument)
        {
            var res = 0;

            switch (State)
            {
            case AsyncState.Send:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    HandleFailedSend();
                    State = AsyncState.Init;
                    sendTcs.TrySetNngError(res);
                    return;
                }
                State = AsyncState.Init;
                sendTcs.TrySetNngResult();
                break;

            case AsyncState.Recv:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    State = AsyncState.Init;
                    receiveTcs.TrySetNngError(res);
                    return;
                }
                State = AsyncState.Init;
                nng_msg msg     = nng_aio_get_msg(aioHandle);
                var     message = Factory.CreateMessage(msg);
                receiveTcs.TrySetNngResult(message);
                break;

            case AsyncState.Init:
            default:
                Console.Error.WriteLine("Survey::AioCallback: " + State);
                State = AsyncState.Init;
                break;
            }
        }
コード例 #8
0
        internal void callback(IntPtr arg)
        {
            var res = 0;

            switch (State)
            {
            case AsyncState.Init:
                break;

            case AsyncState.Send:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    State = AsyncState.Init;
                    Factory.Destroy(ref sendMessage);
                    sendTcs.TrySetNngError(res);
                    return;
                }
                State = AsyncState.Init;
                sendTcs.SetResult(true);
                break;

            case AsyncState.Recv:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    State = AsyncState.Init;
                    receiveTcs.Tcs.TrySetNngError(res);
                    return;
                }
                State = AsyncState.Init;
                nng_msg msg     = nng_aio_get_msg(aioHandle);
                var     message = Factory.CreateMessage(msg);
                receiveTcs.Tcs.SetResult(message);
                break;

            default:
                break;
            }
        }
コード例 #9
0
        internal void callback(IntPtr arg)
        {
            var res = 0;

            switch (State)
            {
            case AsyncState.Init:
                State = AsyncState.Send;
                nng_aio_set_msg(aioHandle, Factory.Borrow(asyncMessage.message));
                nng_ctx_send(ctxHandle, aioHandle);
                break;

            case AsyncState.Send:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    Factory.Destroy(ref asyncMessage.message);
                    asyncMessage.tcs.TrySetNngError(res);
                    State = AsyncState.Init;
                    return;
                }
                State = AsyncState.Recv;
                nng_ctx_recv(ctxHandle, aioHandle);
                break;

            case AsyncState.Recv:
                res = nng_aio_result(aioHandle);
                if (res != 0)
                {
                    asyncMessage.tcs.TrySetNngError(res);
                    State = AsyncState.Init;
                    return;
                }
                nng_msg msg     = nng_aio_get_msg(aioHandle);
                var     message = Factory.CreateMessage(msg);
                asyncMessage.tcs.SetResult(message);
                State = AsyncState.Init;
                break;
            }
        }
コード例 #10
0
        protected override void AioCallback(IntPtr argument)
        {
            var res = Unit.Ok;

            switch (State)
            {
            case AsyncState.Init:
                init();
                break;

            case AsyncState.Recv:
                res = Aio.GetResult();
                if (res.IsErr())
                {
                    asyncMessage.requestTcs.TrySetNngError(res.Err());
                    State = AsyncState.Recv;
                    return;
                }
                State = AsyncState.Wait;
                nng_msg msg     = Aio.GetMsg();
                var     message = Factory.CreateMessage(msg);
                asyncMessage.requestTcs.SetNngResult(message);
                break;

            case AsyncState.Wait:
                break;

            case AsyncState.Send:
                res = Aio.GetResult();
                if (res.IsErr())
                {
                    HandleFailedSend();
                    asyncMessage.replyTcs.TrySetNngError(res.Err());
                }
                var currentReq = asyncMessage;
                init();
                currentReq.replyTcs.SetNngResult();
                break;
            }
        }
コード例 #11
0
        protected override void AioCallback(IntPtr argument)
        {
            var res = Unit.Ok;

            switch (State)
            {
            case AsyncState.Send:
                res = Aio.GetResult();
                if (res.IsErr())
                {
                    HandleFailedSend();
                    State = AsyncState.Init;
                    sendTcs.TrySetNngError(res.Err());
                    return;
                }
                State = AsyncState.Init;
                sendTcs.TrySetNngResult();
                break;

            case AsyncState.Recv:
                res = Aio.GetResult();
                if (res.IsErr())
                {
                    State = AsyncState.Init;
                    receiveTcs.TrySetNngError(res.Err());
                    return;
                }
                State = AsyncState.Init;
                nng_msg msg     = Aio.GetMsg();
                var     message = Factory.CreateMessage(msg);
                receiveTcs.TrySetNngResult(message);
                break;

            case AsyncState.Init:
            default:
                Console.Error.WriteLine("SendReceive::AioCallback: " + State);
                State = AsyncState.Init;
                break;
            }
        }
コード例 #12
0
 public NngMsg(nng_msg message)
 {
     this.message = message;
     _header      = new NngMsgHeader(message);
 }
コード例 #13
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern Int32 nng_msg_header_trim_u32(nng_msg message, out UInt32 data);
コード例 #14
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern Int32 nng_msg_header_insert_u32(nng_msg message, UInt32 data);
コード例 #15
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern Int32 nng_msg_header_append_u32(nng_msg message, UInt32 data);
コード例 #16
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern Int32 nng_msg_header_chop(nng_msg message, UIntPtr size);
コード例 #17
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static int nng_msg_alloc(out nng_msg message, uint size = 0)
 {
     return(nng_msg_alloc(out message, (UIntPtr)size));
 }
コード例 #18
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern Int32 nng_msg_trim(nng_msg message, UIntPtr size);
コード例 #19
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern unsafe Int32 nng_msg_header_append(nng_msg message, byte *data, UIntPtr size);
コード例 #20
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern nng_pipe nng_msg_get_pipe(nng_msg message);
コード例 #21
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern UIntPtr nng_msg_len(nng_msg message);
コード例 #22
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern unsafe void *nng_msg_header(nng_msg message);
コード例 #23
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern int nng_msg_realloc(ref nng_msg message, UIntPtr size);
コード例 #24
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern void nng_msg_free(nng_msg message);
コード例 #25
0
 public NngMessageHeader(nng_msg message)
 {
     this.message = message;
 }
コード例 #26
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 static extern Int32 nng_msg_header_insert(nng_msg message, byte[] data, UIntPtr size);
コード例 #27
0
 public Message(nng_msg message)
 {
     this.message = message;
     _header      = new NngMessageHeader(message);
 }
コード例 #28
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static Int32 nng_msg_header_insert(nng_msg message, byte[] data)
 {
     return(nng_msg_header_insert(message, data, (UIntPtr)data.Length));
 }
コード例 #29
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern unsafe void *nng_msg_body(nng_msg message);
コード例 #30
0
ファイル: Msg.cs プロジェクト: kevinpeizner/nng.NETCore
 public static extern int nng_msg_alloc(out nng_msg message, UIntPtr size);