public override void Cancel()

in MPI/Request.cs [420:463]


        public override void Cancel()
        {
            if (cachedStatus != null)
                return;

            int errorCode1 = Unsafe.MPI_SUCCESS;
            int errorCode2 = Unsafe.MPI_SUCCESS;
            Unsafe.MPI_Status status = new Unsafe.MPI_Status();
            int flag = 0;
            unsafe
            {
                // Cancel both MPI requests
                if (requests.body != Unsafe.MPI_REQUEST_NULL)
                {
                    errorCode1 = Unsafe.MPI_Cancel(ref requests.body);

                    if (errorCode1 == Unsafe.MPI_SUCCESS)
                    {
                        errorCode1 = Unsafe.MPI_Test(ref requests.body, out flag, out status);
                    }
                }
                if (requests.header != Unsafe.MPI_REQUEST_NULL)
                {
                    errorCode2 = Unsafe.MPI_Cancel(ref requests.header);

                    if (errorCode2 == Unsafe.MPI_SUCCESS)
                    {
                        int myFlag = 0;
                        errorCode2 = Unsafe.MPI_Test(ref requests.body, out myFlag, out status);
                        if (myFlag != 0 && flag == 0)
                            flag = myFlag;
                    }
                }
            }

            Cleanup();

            if (errorCode1 != Unsafe.MPI_SUCCESS)
                throw Environment.TranslateErrorIntoException(errorCode1);
            if (errorCode2 != Unsafe.MPI_SUCCESS)
                throw Environment.TranslateErrorIntoException(errorCode2);
            if (flag != 0)
                cachedStatus = new CompletedStatus(status, 0);
        }