Ejemplo n.º 1
0
        public QQActionEvent WaitEvent(long timeoutMs)
        {
            QQActionEvent Event = null;

            if (!_hasEvent)
            {
                return(null);
            }
            try
            {
                _eventQueue.TryTake(out Event, (int)timeoutMs);
            }
            catch (Exception e)
            {
                // throw new QQException(QQErrorCode.WAIT_INTERUPPTED, e);
                NotifyActionEvent(QQActionEventType.EVT_ERROR, new QQException(QQErrorCode.WAIT_INTERUPPTED, e));
            }

            if (Event == null)
            {
                // throw new QQException(QQErrorCode.WAIT_TIMEOUT);
                NotifyActionEvent(QQActionEventType.EVT_ERROR, new QQException(QQErrorCode.WAIT_TIMEOUT));
            }
            else
            {
                _hasEvent = !IsFinalEvent(Event);
            }
            return(Event);
        }
 public QQActionEvent WaitFinalEvent()
 {
     if (EventQueue.IsAddingCompleted)
     {
         return(FinalEvent);
     }
     while (!Token.IsCancellationRequested)
     {
         try
         {
             var Event = WaitEvent();
             if (IsFinalEvent(Event))
             {
                 EventQueue.CompleteAdding();
                 FinalEvent = Event;
                 return(FinalEvent);
             }
         }
         catch (OperationCanceledException)
         {
             FinalEvent = new QQActionEvent(QQActionEventType.EvtCanceled, this);
             return(FinalEvent);
         }
         catch (Exception ex)
         {
             FinalEvent = new QQActionEvent(QQActionEventType.EvtError, ex);
             return(FinalEvent);
         }
     }
     FinalEvent = new QQActionEvent(QQActionEventType.EvtCanceled, this);
     return(FinalEvent);
 }
        private bool IsFinalEvent(QQActionEvent Event)
        {
            var type = Event.Type;

            return(type == QQActionEventType.EvtCanceled ||
                   type == QQActionEventType.EvtError ||
                   type == QQActionEventType.EvtOK);
        }
Ejemplo n.º 4
0
        private bool IsFinalEvent(QQActionEvent Event)
        {
            QQActionEventType type = Event.Type;

            return(type == QQActionEventType.EVT_CANCELED ||
                   type == QQActionEventType.EVT_ERROR ||
                   type == QQActionEventType.EVT_OK);
        }
Ejemplo n.º 5
0
        public QQActionEvent WaitFinalEvent()
        {
            QQActionEvent Event = null;

            while ((Event = WaitEvent()) != null)
            {
                if (IsFinalEvent(Event))
                {
                    return(Event);
                }
            }
            return(new QQActionEvent(QQActionEventType.EVT_ERROR, this));
        }
Ejemplo n.º 6
0
 public QQActionEvent WaitEvent()
 {
     if (!_hasEvent)
     {
         return(null);
     }
     try
     {
         QQActionEvent Event = _eventQueue.Take();
         _hasEvent = !IsFinalEvent(Event);
         return(Event);
     }
     catch (ThreadInterruptedException e)
     {
         throw new QQException(QQErrorCode.WAIT_INTERUPPTED, e);
     }
 }
Ejemplo n.º 7
0
        public QQActionEvent WaitFinalEvent(long timeoutMs)
        {
            QQActionEvent Event = null;
            long          start = DateTime.Now.CurrentTimeMillis();

            while ((Event = WaitEvent(timeoutMs)) != null)
            {
                long end = DateTime.Now.CurrentTimeMillis();
                if (IsFinalEvent(Event))
                {
                    return(Event);
                }
                else
                {
                    timeoutMs -= end - start;
                    start      = DateTime.Now.CurrentTimeMillis();
                }
            }
            return(new QQActionEvent(QQActionEventType.EVT_ERROR, this));
        }
Ejemplo n.º 8
0
 private bool IsFinalEvent(QQActionEvent Event)
 {
     var type = Event.Type;
     return type == QQActionEventType.EvtCanceled
             || type == QQActionEventType.EvtError
             || type == QQActionEventType.EvtOK;
 }
Ejemplo n.º 9
0
        public QQActionEvent WaitFinalEvent()
        {
            if (EventQueue.IsAddingCompleted) return FinalEvent;
            while (!Token.IsCancellationRequested)
            {
                try
                {
                    var Event = WaitEvent();
                    if (IsFinalEvent(Event))
                    {
                        EventQueue.CompleteAdding();
                        FinalEvent = Event;
                        return FinalEvent;
                    }
                }
                catch (OperationCanceledException)
                {
                    FinalEvent = new QQActionEvent(QQActionEventType.EvtCanceled, this);
                    return FinalEvent;
                }
                catch (Exception ex)
                {
                    FinalEvent = new QQActionEvent(QQActionEventType.EvtError, ex);
                    return FinalEvent;

                }
            }
            FinalEvent = new QQActionEvent(QQActionEventType.EvtCanceled, this);
            return FinalEvent;
        }
Ejemplo n.º 10
0
 private bool IsFinalEvent(QQActionEvent Event)
 {
     QQActionEventType type = Event.Type;
     return type == QQActionEventType.EVT_CANCELED
             || type == QQActionEventType.EVT_ERROR
             || type == QQActionEventType.EVT_OK;
 }