コード例 #1
0
        public void print(Zone zone, string line)
        {
            var          implementation = _delegationTarget._print;
            _Zone        implZone       = implementation.zone;
            PrintHandler handler        = implementation.function;

            handler(implZone, async_._parentDelegate(implZone), zone, line);
        }
コード例 #2
0
        public void scheduleMicrotask(Zone zone, ZoneCallback f)
        {
            var   implementation             = _delegationTarget._scheduleMicrotask;
            _Zone implZone                   = implementation.zone;
            ScheduleMicrotaskHandler handler = implementation.function;

            handler(implZone, async_._parentDelegate(implZone), zone, f);
        }
コード例 #3
0
        public Timer createPeriodicTimer(Zone zone, TimeSpan period, ZoneUnaryCallback f)
        {
            var   implementation = _delegationTarget._createPeriodicTimer;
            _Zone implZone       = implementation.zone;
            CreatePeriodicTimerHandler handler = implementation.function;

            return(handler(implZone, async_._parentDelegate(implZone), zone, period, f));
        }
コード例 #4
0
        public ZoneBinaryCallback registerBinaryCallback(Zone zone, ZoneBinaryCallback f)
        {
            var   implementation = _delegationTarget._registerBinaryCallback;
            _Zone implZone       = implementation.zone;
            RegisterBinaryCallbackHandler handler = implementation.function;

            return(handler(implZone, async_._parentDelegate(implZone), zone, f));
        }
コード例 #5
0
        public object run(Zone zone, ZoneCallback f)
        {
            var        implementation = _delegationTarget._run;
            _Zone      implZone       = implementation.zone;
            RunHandler handler        = implementation.function;

            return(handler(implZone, async_._parentDelegate(implZone), zone, f));
        }
コード例 #6
0
        public object runBinary(Zone zone, ZoneBinaryCallback f, object arg1, object arg2)
        {
            var              implementation = _delegationTarget._runBinary;
            _Zone            implZone       = implementation.zone;
            RunBinaryHandler handler        = implementation.function;

            return(handler(implZone, async_._parentDelegate(implZone), zone, f, arg1, arg2));
        }
コード例 #7
0
        public void handleUncaughtError(Zone zone, Exception error)
        {
            var   implementation = _delegationTarget._handleUncaughtError;
            _Zone implZone       = implementation.zone;
            HandleUncaughtErrorHandler handler = implementation.function;

            handler(implZone, async_._parentDelegate(implZone), zone, error);
        }
コード例 #8
0
 internal static ZoneDelegate _parentDelegate(_Zone zone)
 {
     if (zone.parent == null)
     {
         return(null);
     }
     return(zone._parent._delegate);
 }
コード例 #9
0
        public Zone fork(Zone zone, ZoneSpecification specification, Hashtable zoneValues)
        {
            var         implementation = _delegationTarget._fork;
            _Zone       implZone       = implementation.zone;
            ForkHandler handler        = implementation.function;

            return(handler(
                       implZone, async_._parentDelegate(implZone), zone, specification, zoneValues));
        }
コード例 #10
0
        internal _CustomZone(_Zone parent, ZoneSpecification specification, Hashtable map)
        {
            _parent = parent;
            _map    = map;

            _run = (specification.run != null)
                ? new _RunNullaryZoneFunction(this, specification.run)
                : parent._run;
            _runUnary = (specification.runUnary != null)
                ? new _RunUnaryZoneFunction(this, specification.runUnary)
                : parent._runUnary;
            _runBinary = (specification.runBinary != null)
                ? new _RunBinaryZoneFunction(this, specification.runBinary)
                : parent._runBinary;
            _registerCallback = (specification.registerCallback != null)
                ? new _RegisterNullaryZoneFunction(this, specification.registerCallback)
                : parent._registerCallback;
            _registerUnaryCallback = (specification.registerUnaryCallback != null)
                ? new _RegisterUnaryZoneFunction(
                this, specification.registerUnaryCallback)
                : parent._registerUnaryCallback;
            _registerBinaryCallback = (specification.registerBinaryCallback != null)
                ? new _RegisterBinaryZoneFunction(
                this, specification.registerBinaryCallback)
                : parent._registerBinaryCallback;
            _errorCallback = (specification.errorCallback != null)
                ? new _ZoneFunction <ErrorCallbackHandler>(
                this, specification.errorCallback)
                : parent._errorCallback;
            _scheduleMicrotask = (specification.scheduleMicrotask != null)
                ? new _ZoneFunction <ScheduleMicrotaskHandler>(
                this, specification.scheduleMicrotask)
                : parent._scheduleMicrotask;
            _createTimer = (specification.createTimer != null)
                ? new _ZoneFunction <CreateTimerHandler>(this, specification.createTimer)
                : parent._createTimer;
            _createPeriodicTimer = (specification.createPeriodicTimer != null)
                ? new _ZoneFunction <CreatePeriodicTimerHandler>(
                this, specification.createPeriodicTimer)
                : parent._createPeriodicTimer;
            _print = (specification.print != null)
                ? new _ZoneFunction <PrintHandler>(this, specification.print)
                : parent._print;
            _fork = (specification.fork != null)
                ? new _ZoneFunction <ForkHandler>(this, specification.fork)
                : parent._fork;
            _handleUncaughtError = (specification.handleUncaughtError != null)
                ? new _ZoneFunction <HandleUncaughtErrorHandler>(
                this, specification.handleUncaughtError)
                : parent._handleUncaughtError;
        }
コード例 #11
0
        public override AsyncError errorCallback(Exception error)
        {
            if (error == null)
            {
                throw new ArgumentNullException(nameof(error));
            }
            var   implementation     = _errorCallback;
            _Zone implementationZone = implementation.zone;

            if (ReferenceEquals(implementationZone, async_._rootZone))
            {
                return(null);
            }
            ZoneDelegate         parentDelegate = async_._parentDelegate(implementationZone);
            ErrorCallbackHandler handler        = implementation.function;

            return(handler(implementationZone, parentDelegate, this, error));
        }
コード例 #12
0
        public AsyncError errorCallback(Zone zone, Exception error)
        {
            if (error == null)
            {
                throw new ArgumentNullException(nameof(error));
            }

            var   implementation = _delegationTarget._errorCallback;
            _Zone implZone       = implementation.zone;

            if (ReferenceEquals(implZone, async_._rootZone))
            {
                return(null);
            }
            ErrorCallbackHandler handler = implementation.function;

            return(handler(implZone, async_._parentDelegate(implZone), zone, error));
        }
コード例 #13
0
        public static void scheduleMicrotask(ZoneCallback callback)
        {
            _Zone currentZone = (_Zone)Zone.current;

            if (ReferenceEquals(_rootZone, currentZone))
            {
                // No need to bind the callback. We know that the root's scheduleMicrotask
                // will be invoked in the root zone.
                _rootScheduleMicrotask(null, null, _rootZone, callback);
                return;
            }

            _ZoneFunction <ScheduleMicrotaskHandler> implementation = currentZone._scheduleMicrotask;

            if (ReferenceEquals(_rootZone, implementation.zone) &&
                _rootZone.inSameErrorZone(currentZone))
            {
                _rootScheduleMicrotask(
                    null, null, currentZone, currentZone.registerCallback(callback));
                return;
            }

            Zone.current.scheduleMicrotask(Zone.current.bindCallbackGuarded(callback));
        }
コード例 #14
0
 internal _RunNullaryZoneFunction(_Zone zone, RunHandler function)
 {
     this.zone     = zone;
     this.function = function;
 }
コード例 #15
0
 internal _ZoneFunction(_Zone zone, T function)
 {
     this.zone     = zone;
     this.function = function;
 }
コード例 #16
0
 internal _ZoneDelegate(_Zone delegationTarget)
 {
     _delegationTarget = delegationTarget;
 }
コード例 #17
0
 internal _RegisterBinaryZoneFunction(_Zone zone, RegisterBinaryCallbackHandler function)
 {
     this.zone     = zone;
     this.function = function;
 }