summaryrefslogtreecommitdiffstats
path: root/src/libs/xpcom18a4/xpcom/threads/nsIThread.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/libs/xpcom18a4/xpcom/threads/nsIThread.idl144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/libs/xpcom18a4/xpcom/threads/nsIThread.idl b/src/libs/xpcom18a4/xpcom/threads/nsIThread.idl
new file mode 100644
index 00000000..f28d6ec9
--- /dev/null
+++ b/src/libs/xpcom18a4/xpcom/threads/nsIThread.idl
@@ -0,0 +1,144 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "nsISupports.idl"
+
+%{C++
+#include "prthread.h"
+
+#define NS_THREAD_CID \
+{ /* 85CE5510-7808-11d3-A181-0050041CAF44 */ \
+ 0x85ce5510, \
+ 0x7808, \
+ 0x11d3, \
+ {0xa1, 0x81, 0x00, 0x50, 0x04, 0x1c, 0xaf, 0x44} \
+}
+
+#define NS_THREAD_CONTRACTID "@mozilla.org/thread;1"
+#define NS_THREAD_CLASSNAME "Thread"
+#if 0
+%}
+
+typedef PRUint32 PRThreadPriority;
+typedef PRUint32 PRThreadScope;
+typedef PRUint32 PRThreadState;
+
+%{C++
+#endif
+%}
+
+interface nsIRunnable;
+
+[ptr] native PRThread(PRThread);
+
+[scriptable, uuid(6be5e380-6886-11d3-9382-00104ba0fd40)]
+interface nsIThread : nsISupports
+{
+ // These must all match the values used in prthread.h
+ const PRUint32 PRIORITY_LOW = 0;
+ const PRUint32 PRIORITY_NORMAL = 1;
+ const PRUint32 PRIORITY_HIGH = 2;
+ const PRUint32 PRIORITY_URGENT = 3;
+
+ const PRUint32 SCOPE_LOCAL = 0;
+ const PRUint32 SCOPE_GLOBAL = 1;
+ const PRUint32 SCOPE_BOUND = 2;
+
+ const PRUint32 STATE_JOINABLE = 0;
+ const PRUint32 STATE_UNJOINABLE = 1;
+
+ void join();
+ void interrupt();
+
+ attribute PRThreadPriority priority;
+ readonly attribute PRThreadScope scope;
+ readonly attribute PRThreadState state;
+
+ [noscript] PRThread GetPRThread();
+
+ void init(in nsIRunnable aRunnable,
+ in PRUint32 aStackSize,
+ in PRThreadPriority aPriority,
+ in PRThreadScope aScope,
+ in PRThreadState aState);
+
+ /*
+ * Get the currently running thread (really a static method sort of thing).
+ */
+ readonly attribute nsIThread currentThread;
+
+ /*
+ * Sleep to at least this many milliseconds (only works on currrent thread).
+ */
+ void sleep(in PRUint32 msec);
+
+%{C++
+ // returns the nsIThread for the current thread:
+ static NS_COM nsresult GetCurrent(nsIThread* *result);
+
+ // returns the nsIThread for an arbitrary PRThread:
+ static NS_COM nsresult GetIThread(PRThread* prthread, nsIThread* *result);
+
+ // initializes the "main" thread (really, just saves the current thread
+ // at time of calling. meant to be called once at app startup, in lieu
+ // of proper static initializers, to save the primordial thread
+ // for later recall.)
+ static NS_COM nsresult SetMainThread();
+
+ // return the "main" thread
+ static NS_COM nsresult GetMainThread(nsIThread **result);
+
+ static NS_COM PRBool IsMainThread();
+%}
+};
+
+%{C++
+extern NS_COM nsresult
+NS_NewThread(nsIThread* *result,
+ nsIRunnable* runnable,
+ PRUint32 stackSize = 0,
+ PRThreadState state = PR_UNJOINABLE_THREAD,
+ PRThreadPriority priority = PR_PRIORITY_NORMAL,
+ PRThreadScope scope = PR_GLOBAL_THREAD);
+
+extern NS_COM nsresult
+NS_NewThread(nsIThread* *result,
+ PRUint32 stackSize = 0,
+ PRThreadState state = PR_UNJOINABLE_THREAD,
+ PRThreadPriority priority = PR_PRIORITY_NORMAL,
+ PRThreadScope scope = PR_GLOBAL_THREAD);
+%}