summaryrefslogtreecommitdiff
path: root/csharp/src/Ice/AsyncIOThread.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/src/Ice/AsyncIOThread.cs')
-rw-r--r--csharp/src/Ice/AsyncIOThread.cs182
1 files changed, 0 insertions, 182 deletions
diff --git a/csharp/src/Ice/AsyncIOThread.cs b/csharp/src/Ice/AsyncIOThread.cs
deleted file mode 100644
index bca757b110f..00000000000
--- a/csharp/src/Ice/AsyncIOThread.cs
+++ /dev/null
@@ -1,182 +0,0 @@
-//
-// Copyright (c) ZeroC, Inc. All rights reserved.
-//
-
-namespace IceInternal
-{
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Threading;
-
- public class AsyncIOThread
- {
- internal AsyncIOThread(Instance instance)
- {
- _instance = instance;
-
- _thread = new HelperThread(this);
- updateObserver();
- _thread.Start(Util.stringToThreadPriority(
- instance.initializationData().properties.getProperty("Ice.ThreadPriority")));
- }
-
- 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();
- }
- }
- }
- }
-
- public void queue(ThreadPoolWorkItem callback)
- {
- lock(this)
- {
- Debug.Assert(!_destroyed);
- _queue.AddLast(callback);
- Monitor.Pulse(this);
- }
- }
-
- public void destroy()
- {
- lock(this)
- {
- Debug.Assert(!_destroyed);
- _destroyed = true;
- Monitor.Pulse(this);
- }
- }
-
- public void joinWithThread()
- {
- if(_thread != null)
- {
- _thread.Join();
- }
- }
-
- public void run()
- {
- LinkedList<ThreadPoolWorkItem> queue = new LinkedList<ThreadPoolWorkItem>();
- bool inUse = false;
- while(true)
- {
- lock(this)
- {
- if(_observer != null && inUse)
- {
- _observer.stateChanged(Ice.Instrumentation.ThreadState.ThreadStateInUseForIO,
- Ice.Instrumentation.ThreadState.ThreadStateIdle);
- inUse = false;
- }
-
- if(_destroyed && _queue.Count == 0)
- {
- break;
- }
-
- while(!_destroyed && _queue.Count == 0)
- {
- Monitor.Wait(this);
- }
-
- LinkedList<ThreadPoolWorkItem> tmp = queue;
- queue = _queue;
- _queue = tmp;
-
- if(_observer != null)
- {
- _observer.stateChanged(Ice.Instrumentation.ThreadState.ThreadStateIdle,
- Ice.Instrumentation.ThreadState.ThreadStateInUseForIO);
- inUse = true;
- }
- }
-
- foreach(ThreadPoolWorkItem cb in queue)
- {
- try
- {
- cb();
- }
- catch(Ice.LocalException ex)
- {
- string s = "exception in asynchronous IO thread:\n" + ex;
- _instance.initializationData().logger.error(s);
- }
- catch(System.Exception ex)
- {
- string s = "unknown exception in asynchronous IO thread:\n" + ex;
- _instance.initializationData().logger.error(s);
- }
- }
- queue.Clear();
- }
-
- if(_observer != null)
- {
- _observer.detach();
- }
- }
-
- private Instance _instance;
- private bool _destroyed;
- private LinkedList<ThreadPoolWorkItem> _queue = new LinkedList<ThreadPoolWorkItem>();
- private Ice.Instrumentation.ThreadObserver _observer;
-
- private sealed class HelperThread
- {
- internal HelperThread(AsyncIOThread asyncIOThread)
- {
- _asyncIOThread = asyncIOThread;
- _name = _asyncIOThread._instance.initializationData().properties.getProperty("Ice.ProgramName");
- if(_name.Length > 0)
- {
- _name += "-";
- }
- _name += "Ice.AsyncIOThread";
- }
-
- public void Join()
- {
- _thread.Join();
- }
-
- public string getName()
- {
- return _name;
- }
-
- public void Start(ThreadPriority priority)
- {
- _thread = new Thread(new ThreadStart(Run));
- _thread.IsBackground = true;
- _thread.Name = _name;
- _thread.Start();
- }
-
- public void Run()
- {
- _asyncIOThread.run();
- }
-
- private AsyncIOThread _asyncIOThread;
- private string _name;
- private Thread _thread;
- }
-
- private HelperThread _thread;
- }
-}