Example #1
0
 getThreadObserver(string p,
                   string n,
                   Ice.Instrumentation.ThreadState s,
                   Ice.Instrumentation.ThreadObserver o)
 {
     return(null);
 }
Example #2
0
 public void updateObserver()
 {
     // Must be called with the thread pool mutex locked
     Ice.Instrumentation.CommunicatorObserver obsv = _threadPool._instance.initializationData().observer;
     if (obsv != null)
     {
         _observer = obsv.getThreadObserver(_threadPool._prefix, _name, _state, _observer);
         if (_observer != null)
         {
             _observer.attach();
         }
     }
 }
Example #3
0
 getThreadObserver(String p, String id, Ice.Instrumentation.ThreadState s,
                   Ice.Instrumentation.ThreadObserver old)
 {
     lock (this)
     {
         Debug.Assert(old == null || old is ThreadObserverI);
         if (threadObserver == null)
         {
             threadObserver = new ThreadObserverI();
             threadObserver.reset();
         }
         return(threadObserver);
     }
 }
Example #4
0
 public Ice.Instrumentation.ThreadObserver getThreadObserver(string parent, string id,
                                                             Ice.Instrumentation.ThreadState s,
                                                             Ice.Instrumentation.ThreadObserver obsv)
 {
     if (_threads.isEnabled())
     {
         try
         {
             Ice.Instrumentation.ThreadObserver del = null;
             ThreadObserverI o = obsv is ThreadObserverI ? (ThreadObserverI)obsv : null;
             if (_delegate != null)
             {
                 del = _delegate.getThreadObserver(parent, id, s, o != null ? o.getDelegate() : obsv);
             }
             return(_threads.getObserver(new ThreadHelper(parent, id, s), obsv, del));
         }
         catch (Exception ex)
         {
             _metrics.getLogger().error("unexpected exception trying to obtain observer:\n" + ex);
         }
     }
     return(null);
 }
Example #5
0
 public void updateObserver()
 {
     // Must be called with the thread pool mutex locked
     Ice.Instrumentation.CommunicatorObserver obsv = _threadPool._instance.initializationData().observer;
     if(obsv != null)
     {
         _observer = obsv.getThreadObserver(_threadPool._prefix, _name, _state, _observer);
         if(_observer != null)
         {
             _observer.attach();
         }
     }
 }
Example #6
0
        public void Run()
        {
            Token token = null;

            while (true)
            {
                lock (this)
                {
                    if (_instance != null)
                    {
                        //
                        // If the task we just ran is a repeated task, schedule it
                        // again for execution if it wasn't canceled.
                        //
                        if (token != null && token.delay > 0)
                        {
                            if (_tasks.ContainsKey(token.task))
                            {
                                token.scheduledTime = Time.currentMonotonicTimeMillis() + token.delay;
                                _tokens.Add(token, null);
                            }
                        }
                    }
                    token = null;

                    if (_instance == null)
                    {
                        break;
                    }

                    if (_tokens.Count == 0)
                    {
                        _wakeUpTime = long.MaxValue;
                        Monitor.Wait(this);
                    }

                    if (_instance == null)
                    {
                        break;
                    }

                    while (_tokens.Count > 0 && _instance != null)
                    {
                        long now = Time.currentMonotonicTimeMillis();

                        Token first = null;
                        foreach (Token t in _tokens.Keys)
                        {
                            first = t;
                            break;
                        }
                        Debug.Assert(first != null);

                        if (first.scheduledTime <= now)
                        {
                            _tokens.Remove(first);
                            token = first;
                            if (token.delay == 0)
                            {
                                _tasks.Remove(token.task);
                            }
                            break;
                        }

                        _wakeUpTime = first.scheduledTime;
                        Monitor.Wait(this, (int)(first.scheduledTime - now));
                    }

                    if (_instance == null)
                    {
                        break;
                    }
                }

                if (token != null)
                {
                    try
                    {
                        Ice.Instrumentation.ThreadObserver threadObserver = _observer;
                        if (threadObserver != null)
                        {
                            threadObserver.stateChanged(Ice.Instrumentation.ThreadState.ThreadStateIdle,
                                                        Ice.Instrumentation.ThreadState.ThreadStateInUseForOther);
                            try
                            {
                                token.task.runTimerTask();
                            }
                            finally
                            {
                                threadObserver.stateChanged(Ice.Instrumentation.ThreadState.ThreadStateInUseForOther,
                                                            Ice.Instrumentation.ThreadState.ThreadStateIdle);
                            }
                        }
                        else
                        {
                            token.task.runTimerTask();
                        }
                    }
                    catch (System.Exception ex)
                    {
                        lock (this)
                        {
                            if (_instance != null)
                            {
                                string s = "unexpected exception from task run method in timer thread:\n" + ex;
                                _instance.initializationData().logger.error(s);
                            }
                        }
                    }
                }
            }
        }
Example #7
0
File: Timer.cs Project: externl/ice
 internal void updateObserver(Ice.Instrumentation.CommunicatorObserver obsv)
 {
     lock(this)
     {
         Debug.Assert(obsv != null);
         _observer = obsv.getThreadObserver("Communicator",
                                            _thread.Name,
                                            Ice.Instrumentation.ThreadState.ThreadStateIdle,
                                            _observer);
         if(_observer != null)
         {
             _observer.attach();
         }
     }
 }
Example #8
0
 public void updateObserver()
 {
     lock(this)
     {
         Ice.Instrumentation.CommunicatorObserver obsv = _instance.initializationData().observer;
         if(obsv != null)
         {
             _observer = obsv.getThreadObserver("Communicator",
                                                _thread.getName(),
                                                Ice.Instrumentation.ThreadState.ThreadStateIdle,
                                                _observer);
             if(_observer != null)
             {
                 _observer.attach();
             }
         }
     }
 }