2 * Funambol is a mobile platform developed by Funambol, Inc.
3 * Copyright (C) 2003 - 2007 Funambol, Inc.
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU Affero General Public License version 3 as published by
7 * the Free Software Foundation with the addition of the following permission
8 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
9 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
10 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program; if not, see http://www.gnu.org/licenses or write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
23 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
25 * The interactive user interfaces in modified source and object code versions
26 * of this program must display Appropriate Legal Notices, as required under
27 * Section 5 of the GNU Affero General Public License version 3.
29 * In accordance with Section 7(b) of the GNU Affero General Public License
30 * version 3, these Appropriate Legal Notices must retain the display of the
31 * "Powered by Funambol" logo. If the display of the logo is not reasonably
32 * feasible for technical reasons, the Appropriate Legal Notices must display
33 * the words "Powered by Funambol".
51 enum Priority { IdlePriority = EPriorityNull,
52 LowestPriority = EPriorityMuchLess,
53 LowPriority = EPriorityLess,
54 NormalPriority = EPriorityNormal,
55 HighPriority = EPriorityMore,
56 HighestPriority = EPriorityMuchMore,
57 TimeCriticalPriority = EPriorityRealTime,
63 Starts this thread with the given priority. Threads entry point is
66 virtual void start( Priority priority = InheritPriority );
69 Wait for this thread to finish its execution. This method is used to
70 synchronize threads execution (similar to pthread_join)
75 Wait for this thread to finish its execution or the timeout expires.
76 If the thread terminates its execution before the timeout expires then
77 true is returned, false otherwise.
79 virtual bool wait(unsigned long timeout);
82 Returns true iff the thread execution is terminated
84 virtual bool finished() const;
87 Returns true iff the thread is still running
89 virtual bool running() const;
92 Ask this thread to terminate its execution. But the thread is not
93 forced to terminate. The thread must cooperate to terminate.
95 virtual void softTerminate();
98 virtual void run() = 0;
102 * Suspend the current thread for the given time (milliseconds)
104 static void sleep(long msec);
108 unsigned long timeout;
116 friend TInt symbianRunWrapper(TAny* thread);
117 friend TInt symbianTimeoutWrapper(TAny* thread);