Fan.Sys.Future.sendWhenDone C# (CSharp) Méthode

sendWhenDone() private méthode

private sendWhenDone ( Actor a, Future f ) : void
a Actor
f Future
Résultat void
        internal void sendWhenDone(Actor a, Future f)
        {
            // if already done, then set immediate flag
              // otherwise add to our when done list
              bool immediate = false;
              lock (this)
              {
            if (isDone()) immediate = true;
            else
            {
              if (whenDone == null) whenDone = new ArrayList();
              whenDone.Add(new WhenDone(a, f));
            }
              }

              // if immediate we are already done so enqueue immediately
              if (immediate)
              {
            try { a._enqueue(f, false); }
            catch (System.Exception e) { Err.dumpStack(e); }
              }
        }

Same methods

Future::sendWhenDone ( ArrayList list ) : void

Usage Example

Exemple #1
0
        //////////////////////////////////////////////////////////////////////////
        // Implementation
        //////////////////////////////////////////////////////////////////////////

        private Future _send(object msg, Duration dur, Future whenDone)
        {
            // ensure immutable or safe copy
            msg = Sys.safe(msg);

            // don't deliver new messages to a stopped pool
            if (m_pool.isStopped())
            {
                throw Err.make("ActorPool is stopped").val;
            }

            // get the future instance to manage this message's lifecycle
            Future f = new Future(msg);

            // either enqueue immediately or schedule with pool
            if (dur != null)
            {
                m_pool.schedule(this, dur, f);
            }
            else if (whenDone != null)
            {
                whenDone.sendWhenDone(this, f);
            }
            else
            {
                f = _enqueue(f, true);
            }

            return(f);
        }
All Usage Examples Of Fan.Sys.Future::sendWhenDone