From 134f86e8d5c414409631b25b8c6f0ee45fbd8631 Mon Sep 17 00:00:00 2001
From: David Walter Seikel
Date: Thu, 3 Nov 2016 21:44:39 +1000
Subject: Initial update to OpenSim 0.8.2.1 source code.
---
.../SmartThreadPool/WorkItem.WorkItemResult.cs | 190 +++++++++++++++++++++
1 file changed, 190 insertions(+)
create mode 100644 ThirdParty/SmartThreadPool/WorkItem.WorkItemResult.cs
(limited to 'ThirdParty/SmartThreadPool/WorkItem.WorkItemResult.cs')
diff --git a/ThirdParty/SmartThreadPool/WorkItem.WorkItemResult.cs b/ThirdParty/SmartThreadPool/WorkItem.WorkItemResult.cs
new file mode 100644
index 0000000..435a14b
--- /dev/null
+++ b/ThirdParty/SmartThreadPool/WorkItem.WorkItemResult.cs
@@ -0,0 +1,190 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading;
+
+namespace Amib.Threading.Internal
+{
+ public partial class WorkItem
+ {
+ #region WorkItemResult class
+
+ private class WorkItemResult : IWorkItemResult, IInternalWorkItemResult, IInternalWaitableResult
+ {
+ ///
+ /// A back reference to the work item
+ ///
+ private readonly WorkItem _workItem;
+
+ public WorkItemResult(WorkItem workItem)
+ {
+ _workItem = workItem;
+ }
+
+ internal WorkItem GetWorkItem()
+ {
+ return _workItem;
+ }
+
+ #region IWorkItemResult Members
+
+ public bool IsCompleted
+ {
+ get
+ {
+ return _workItem.IsCompleted;
+ }
+ }
+
+ public bool IsCanceled
+ {
+ get
+ {
+ return _workItem.IsCanceled;
+ }
+ }
+
+ public object GetResult()
+ {
+ return _workItem.GetResult(Timeout.Infinite, true, null);
+ }
+
+ public object GetResult(int millisecondsTimeout, bool exitContext)
+ {
+ return _workItem.GetResult(millisecondsTimeout, exitContext, null);
+ }
+
+ public object GetResult(TimeSpan timeout, bool exitContext)
+ {
+ return _workItem.GetResult((int)timeout.TotalMilliseconds, exitContext, null);
+ }
+
+ public object GetResult(int millisecondsTimeout, bool exitContext, WaitHandle cancelWaitHandle)
+ {
+ return _workItem.GetResult(millisecondsTimeout, exitContext, cancelWaitHandle);
+ }
+
+ public object GetResult(TimeSpan timeout, bool exitContext, WaitHandle cancelWaitHandle)
+ {
+ return _workItem.GetResult((int)timeout.TotalMilliseconds, exitContext, cancelWaitHandle);
+ }
+
+ public object GetResult(out Exception e)
+ {
+ return _workItem.GetResult(Timeout.Infinite, true, null, out e);
+ }
+
+ public object GetResult(int millisecondsTimeout, bool exitContext, out Exception e)
+ {
+ return _workItem.GetResult(millisecondsTimeout, exitContext, null, out e);
+ }
+
+ public object GetResult(TimeSpan timeout, bool exitContext, out Exception e)
+ {
+ return _workItem.GetResult((int)timeout.TotalMilliseconds, exitContext, null, out e);
+ }
+
+ public object GetResult(int millisecondsTimeout, bool exitContext, WaitHandle cancelWaitHandle, out Exception e)
+ {
+ return _workItem.GetResult(millisecondsTimeout, exitContext, cancelWaitHandle, out e);
+ }
+
+ public object GetResult(TimeSpan timeout, bool exitContext, WaitHandle cancelWaitHandle, out Exception e)
+ {
+ return _workItem.GetResult((int)timeout.TotalMilliseconds, exitContext, cancelWaitHandle, out e);
+ }
+
+ public bool Cancel()
+ {
+ return Cancel(false);
+ }
+
+ public bool Cancel(bool abortExecution)
+ {
+ return _workItem.Cancel(abortExecution);
+ }
+
+ public object State
+ {
+ get
+ {
+ return _workItem._state;
+ }
+ }
+
+ public WorkItemPriority WorkItemPriority
+ {
+ get
+ {
+ return _workItem._workItemInfo.WorkItemPriority;
+ }
+ }
+
+ ///
+ /// Return the result, same as GetResult()
+ ///
+ public object Result
+ {
+ get { return GetResult(); }
+ }
+
+ ///
+ /// Returns the exception if occured otherwise returns null.
+ /// This value is valid only after the work item completed,
+ /// before that it is always null.
+ ///
+ public object Exception
+ {
+ get { return _workItem._exception; }
+ }
+
+ #endregion
+
+ #region IInternalWorkItemResult Members
+
+ public event WorkItemStateCallback OnWorkItemStarted
+ {
+ add
+ {
+ _workItem.OnWorkItemStarted += value;
+ }
+ remove
+ {
+ _workItem.OnWorkItemStarted -= value;
+ }
+ }
+
+
+ public event WorkItemStateCallback OnWorkItemCompleted
+ {
+ add
+ {
+ _workItem.OnWorkItemCompleted += value;
+ }
+ remove
+ {
+ _workItem.OnWorkItemCompleted -= value;
+ }
+ }
+
+ #endregion
+
+ #region IInternalWorkItemResult Members
+
+ public IWorkItemResult GetWorkItemResult()
+ {
+ return this;
+ }
+
+ public IWorkItemResult GetWorkItemResultT()
+ {
+ return new WorkItemResultTWrapper(this);
+ }
+
+ #endregion
+ }
+
+ #endregion
+
+ }
+}
--
cgit v1.1