InterruptedErr
Inheritance: Err
コード例 #1
0
ファイル: InterruptedErr.cs プロジェクト: syatanic/fantom
        public new static InterruptedErr make(string msg, Err cause)
        {
            InterruptedErr err = new InterruptedErr();

            make_(err, msg, cause);
            return(err);
        }
コード例 #2
0
        public object get(Duration timeout)
        {
            object r = null;

            try
            {
                lock (this)
                {
                    // wait until we enter a done state, the only notifies
                    // on this object should be from cancel, set, or err
                    if (timeout == null)
                    {
                        // wait forever until done
                        while ((m_state & DONE) == 0)
                        {
                            Monitor.Wait(this);
                        }
                    }
                    else
                    {
                        // if not done, then wait with timeout and then
                        // if still not done throw a timeout exception
                        if ((m_state & DONE) == 0)
                        {
                            Monitor.Wait(this, (int)timeout.millis());
                            if ((m_state & DONE) == 0)
                            {
                                throw TimeoutErr.make("Future.get timed out").val;
                            }
                        }
                    }

                    // if canceled throw CancelErr
                    if (m_state == DONE_CANCEL)
                    {
                        throw CancelledErr.make("message canceled").val;
                    }

                    // if error was raised, raise it to caller
                    if (m_state == DONE_ERR)
                    {
                        throw ((Err)m_result).rebase();
                    }

                    // assign result to local variable for return
                    r = m_result;
                }
            }
            catch (ThreadInterruptedException e)
            {
                throw InterruptedErr.make(e).val;
            }

            // ensure immutable or safe copy
            return(Sys.safe(r));
        }
コード例 #3
0
        //////////////////////////////////////////////////////////////////////////
        // Utils
        //////////////////////////////////////////////////////////////////////////

        public static void sleep(Duration duration)
        {
            try
            {
                long ticks = duration.m_ticks;
                System.Threading.Thread.Sleep(new System.TimeSpan(ticks / 100));
            }
            catch (ThreadInterruptedException e)
            {
                throw InterruptedErr.make(e).val;
            }
        }
コード例 #4
0
ファイル: ActorPool.cs プロジェクト: syatanic/fantom
        public ActorPool join(Duration timeout)
        {
            if (!isStopped())
            {
                throw Err.make("ActorPool is not stopped").val;
            }
            long ms = timeout == null ? System.Int32.MaxValue : timeout.millis();

            try
            {
                if (m_threadPool.join(ms))
                {
                    return(this);
                }
            }
            catch (System.Threading.ThreadInterruptedException e)
            {
                throw InterruptedErr.make(e).val;
            }
            throw TimeoutErr.make("ActorPool.join timed out").val;
        }
コード例 #5
0
ファイル: InterruptedErr.cs プロジェクト: nomit007/f4
 public static void make_(InterruptedErr self, string msg, Err cause)
 {
     Err.make_(self, msg, cause);
 }
コード例 #6
0
ファイル: InterruptedErr.cs プロジェクト: nomit007/f4
 public static void make_(InterruptedErr self, string msg)
 {
     make_(self, msg, null);
 }
コード例 #7
0
ファイル: InterruptedErr.cs プロジェクト: nomit007/f4
 public static void make_(InterruptedErr self)
 {
     make_(self, null);
 }
コード例 #8
0
ファイル: InterruptedErr.cs プロジェクト: nomit007/f4
 public static new InterruptedErr make(string msg, Err cause)
 {
     InterruptedErr err = new InterruptedErr();
       make_(err, msg, cause);
       return err;
 }
コード例 #9
0
ファイル: InterruptedErr.cs プロジェクト: syatanic/fantom
 public static void make_(InterruptedErr self, string msg, Err cause)
 {
     Err.make_(self, msg, cause);
 }
コード例 #10
0
ファイル: InterruptedErr.cs プロジェクト: syatanic/fantom
 public static void make_(InterruptedErr self, string msg)
 {
     make_(self, msg, null);
 }
コード例 #11
0
ファイル: InterruptedErr.cs プロジェクト: syatanic/fantom
 public static void make_(InterruptedErr self)
 {
     make_(self, null);
 }