CSPspEmu.Hle.Modules.threadman.ThreadManForUser.sceKernelReceiveMsgPipe C# (CSharp) Метод

sceKernelReceiveMsgPipe() приватный Метод

private sceKernelReceiveMsgPipe ( MsgPipe MsgPipe, byte Message, int Size, int WaitMode, int ResultSizeAddr, uint Timeout ) : int
MsgPipe MsgPipe
Message byte
Size int
WaitMode int
ResultSizeAddr int
Timeout uint
Результат int
        public int sceKernelReceiveMsgPipe(MsgPipe MsgPipe, byte* Message, int Size, int WaitMode, int* ResultSizeAddr, uint* Timeout)
        {
            if (Timeout != null) throw(new NotImplementedException());

            #if DEBUG_MSG_PIPES
            Console.Error.WriteLine("sceKernelReceiveMsgPipe");
            #endif

            bool Transferred = false;
            while (!Transferred)
            {
                try
                {
                    MsgPipe.Dequeue(Message, Size, ResultSizeAddr);
                    Transferred = true;
                }
                catch (SceKernelException)
                {
                    ThreadManager.Current.SetWaitAndPrepareWakeUp(HleThread.WaitType.None, "sceKernelReceiveMsgPipe", MsgPipe, WakeUpCallback =>
                    {
            #if DEBUG_MSG_PIPES
                        Console.Error.WriteLine("sceKernelReceiveMsgPipe.wait");
            #endif

                        MsgPipe.OnAvailableForRecv.Enqueue(() =>
                        {
            #if DEBUG_MSG_PIPES
                            Console.Error.WriteLine("sceKernelReceiveMsgPipe.awake");
            #endif
                            WakeUpCallback();
                        });

                    }, HandleCallbacks: false);
                }
            }
            return 0;
        }
ThreadManForUser