From 1a47ff8094ee414a47aebd310826906d89428a09 Mon Sep 17 00:00:00 2001
From: Teravus Ovares
Date: Fri, 30 May 2008 12:27:06 +0000
Subject: * This is Melanie's XEngine script engine. I've not tested this real
well, however, it's confirmed to compile and OpenSimulator to run
successfully without this script engine active.
---
ThirdParty/SmartThreadPool/Interfaces.cs | 271 +++++++++++++++++++++++++++++++
1 file changed, 271 insertions(+)
create mode 100644 ThirdParty/SmartThreadPool/Interfaces.cs
(limited to 'ThirdParty/SmartThreadPool/Interfaces.cs')
diff --git a/ThirdParty/SmartThreadPool/Interfaces.cs b/ThirdParty/SmartThreadPool/Interfaces.cs
new file mode 100644
index 0000000..f1c1fcf
--- /dev/null
+++ b/ThirdParty/SmartThreadPool/Interfaces.cs
@@ -0,0 +1,271 @@
+// Ami Bar
+// amibar@gmail.com
+
+using System;
+using System.Threading;
+
+namespace Amib.Threading
+{
+ #region Delegates
+
+ ///
+ /// A delegate that represents the method to run as the work item
+ ///
+ /// A state object for the method to run
+ public delegate object WorkItemCallback(object state);
+
+ ///
+ /// A delegate to call after the WorkItemCallback completed
+ ///
+ /// The work item result object
+ public delegate void PostExecuteWorkItemCallback(IWorkItemResult wir);
+
+ ///
+ /// A delegate to call when a WorkItemsGroup becomes idle
+ ///
+ /// A reference to the WorkItemsGroup that became idle
+ public delegate void WorkItemsGroupIdleHandler(IWorkItemsGroup workItemsGroup);
+
+ #endregion
+
+ #region WorkItem Priority
+
+ public enum WorkItemPriority
+ {
+ Lowest,
+ BelowNormal,
+ Normal,
+ AboveNormal,
+ Highest,
+ }
+
+ #endregion
+
+ #region IHasWorkItemPriority interface
+
+ public interface IHasWorkItemPriority
+ {
+ WorkItemPriority WorkItemPriority { get; }
+ }
+
+ #endregion
+
+ #region IWorkItemsGroup interface
+
+ ///
+ /// IWorkItemsGroup interface
+ ///
+ public interface IWorkItemsGroup
+ {
+ ///
+ /// Get/Set the name of the WorkItemsGroup
+ ///
+ string Name { get; set; }
+
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback);
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback, WorkItemPriority workItemPriority);
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback, object state);
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback, object state, WorkItemPriority workItemPriority);
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback, object state, PostExecuteWorkItemCallback postExecuteWorkItemCallback);
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback, object state, PostExecuteWorkItemCallback postExecuteWorkItemCallback, WorkItemPriority workItemPriority);
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback, object state, PostExecuteWorkItemCallback postExecuteWorkItemCallback, CallToPostExecute callToPostExecute);
+ IWorkItemResult QueueWorkItem(WorkItemCallback callback, object state, PostExecuteWorkItemCallback postExecuteWorkItemCallback, CallToPostExecute callToPostExecute, WorkItemPriority workItemPriority);
+
+ IWorkItemResult QueueWorkItem(WorkItemInfo workItemInfo, WorkItemCallback callback);
+ IWorkItemResult QueueWorkItem(WorkItemInfo workItemInfo, WorkItemCallback callback, object state);
+
+ void WaitForIdle();
+ bool WaitForIdle(TimeSpan timeout);
+ bool WaitForIdle(int millisecondsTimeout);
+
+ int WaitingCallbacks { get; }
+ event WorkItemsGroupIdleHandler OnIdle;
+
+ void Cancel();
+ void Start();
+ }
+
+ #endregion
+
+ #region CallToPostExecute enumerator
+
+ [Flags]
+ public enum CallToPostExecute
+ {
+ Never = 0x00,
+ WhenWorkItemCanceled = 0x01,
+ WhenWorkItemNotCanceled = 0x02,
+ Always = WhenWorkItemCanceled | WhenWorkItemNotCanceled,
+ }
+
+ #endregion
+
+ #region IWorkItemResult interface
+
+ ///
+ /// IWorkItemResult interface
+ ///
+ public interface IWorkItemResult
+ {
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits.
+ ///
+ /// The result of the work item
+ object GetResult();
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout.
+ ///
+ /// The result of the work item
+ /// On timeout throws WorkItemTimeoutException
+ object GetResult(
+ int millisecondsTimeout,
+ bool exitContext);
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout.
+ ///
+ /// The result of the work item
+ /// On timeout throws WorkItemTimeoutException
+ object GetResult(
+ TimeSpan timeout,
+ bool exitContext);
+
+ void Abort();
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout or until the cancelWaitHandle is signaled.
+ ///
+ /// Timeout in milliseconds, or -1 for infinite
+ ///
+ /// true to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it; otherwise, false.
+ ///
+ /// A cancel wait handle to interrupt the blocking if needed
+ /// The result of the work item
+ /// On timeout throws WorkItemTimeoutException
+ /// On cancel throws WorkItemCancelException
+ object GetResult(
+ int millisecondsTimeout,
+ bool exitContext,
+ WaitHandle cancelWaitHandle);
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout or until the cancelWaitHandle is signaled.
+ ///
+ /// The result of the work item
+ /// On timeout throws WorkItemTimeoutException
+ /// On cancel throws WorkItemCancelException
+ object GetResult(
+ TimeSpan timeout,
+ bool exitContext,
+ WaitHandle cancelWaitHandle);
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits.
+ ///
+ /// Filled with the exception if one was thrown
+ /// The result of the work item
+ object GetResult(out Exception e);
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout.
+ ///
+ /// Filled with the exception if one was thrown
+ /// The result of the work item
+ /// On timeout throws WorkItemTimeoutException
+ object GetResult(
+ int millisecondsTimeout,
+ bool exitContext,
+ out Exception e);
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout.
+ ///
+ /// Filled with the exception if one was thrown
+ /// The result of the work item
+ /// On timeout throws WorkItemTimeoutException
+ object GetResult(
+ TimeSpan timeout,
+ bool exitContext,
+ out Exception e);
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout or until the cancelWaitHandle is signaled.
+ ///
+ /// Timeout in milliseconds, or -1 for infinite
+ ///
+ /// true to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it; otherwise, false.
+ ///
+ /// A cancel wait handle to interrupt the blocking if needed
+ /// Filled with the exception if one was thrown
+ /// The result of the work item
+ /// On timeout throws WorkItemTimeoutException
+ /// On cancel throws WorkItemCancelException
+ object GetResult(
+ int millisecondsTimeout,
+ bool exitContext,
+ WaitHandle cancelWaitHandle,
+ out Exception e);
+
+ ///
+ /// Get the result of the work item.
+ /// If the work item didn't run yet then the caller waits until timeout or until the cancelWaitHandle is signaled.
+ ///
+ /// The result of the work item
+ /// Filled with the exception if one was thrown
+ /// On timeout throws WorkItemTimeoutException
+ /// On cancel throws WorkItemCancelException
+ object GetResult(
+ TimeSpan timeout,
+ bool exitContext,
+ WaitHandle cancelWaitHandle,
+ out Exception e);
+
+ ///
+ /// Gets an indication whether the asynchronous operation has completed.
+ ///
+ bool IsCompleted { get; }
+
+ ///
+ /// Gets an indication whether the asynchronous operation has been canceled.
+ ///
+ bool IsCanceled { get; }
+
+ ///
+ /// Gets a user-defined object that qualifies or contains information about an asynchronous operation.
+ ///
+ object State { get; }
+
+ ///
+ /// Cancel the work item if it didn't start running yet.
+ ///
+ /// Returns true on success or false if the work item is in progress or already completed
+ bool Cancel();
+
+ ///
+ /// Get the work item's priority
+ ///
+ WorkItemPriority WorkItemPriority { get; }
+
+ ///
+ /// Return the result, same as GetResult()
+ ///
+ object Result { get; }
+
+ ///
+ /// Returns the exception if occured otherwise returns null.
+ ///
+ object Exception { get; }
+ }
+
+ #endregion
+}
--
cgit v1.1