xref: /AOO41X/main/jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java (revision 2be432768a66cc90838f6a32e76ec156f587e741)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package com.sun.star.lib.uno.environments.remote;
25 
26 /**
27  * This interface is an abstraction of the various
28  * threadpool implementations.
29  * <p>
30  * @version     $Revision: 1.7 $ $ $Date: 2008-04-11 11:20:01 $
31  * @author      Joerg Budischewski
32  * @author      Kay Ramme
33  * @see         com.sun.star.lib.uno.environments.remote.ThreadPoolFactory
34  * @see         com.sun.star.lib.uno.environments.remote.IThreadPoolFactory
35  * @since       UDK1.0
36  */
37 public interface IThreadPool {
38     /**
39      * Retrieves the global threadId for the current thread.
40      * <p>
41      * @return the thread id
42      */
getThreadId()43     ThreadId getThreadId();
44 
45     /**
46      * Attaches this thread to the thread pool.
47      * <p>
48      * @see                 #enter
49      */
attach()50     public void attach();
51 
52     /**
53      * As above, but hands in an already existing
54      * instance of the threadid of the current thread.
55      * Returns a handle which can be used in enter and
56      * detach calls.<p>
57      * The function exists for performance
58      * optimization reasons.
59      * @see #attach
60      */
attach( ThreadId id )61     public Object attach( ThreadId id );
62 
63     /**
64      * Detaches this thread from the thread pool.
65      * @see                 #enter
66      */
detach()67     public void detach();
68 
69     /**
70      * As above, but hands in an already existing
71      * instance of the threadid of the current thread
72      * and a handle returned by attach.
73      * The function exists for performance
74      * optimization reasons.
75      * @see #attach,#detach
76      */
detach( Object handle, ThreadId id )77     public void detach( Object handle, ThreadId id );
78 
79     /**
80      * Lets this thread enter the thread pool.
81      * This thread then executes all jobs put via
82      * <code>putJob</code> until a reply job arrives.
83      * <p>
84      * @see                 #putJob
85      */
enter()86     public Object enter() throws Throwable;
87 
88     /**
89      * as above but hands in an already existing
90      * instance of the threadid of the current thread
91      * and a handle returned by attach.
92      * This thread then executes all jobs put via
93      * <code>putJob</code> until a reply job arrives.
94      * <p>
95      * @see                 #putJob
96      */
enter( Object handle, ThreadId id )97     public Object enter( Object handle, ThreadId id ) throws Throwable;
98 
99     /**
100      * Queues a job into the jobQueue of the thread belonging
101      * to the jobs threadId.
102      * <p>
103      * @param job       the job
104      */
putJob(Job job)105     public void putJob(Job job);
106 
107     /**
108      * Disposes this thread pool, thus releasing
109      * all threads by throwing a <code>DisposedException</code> with the given
110      * <code>Throwable</code> cause.
111      * <p>
112      * @param throwing   the cause
113      */
dispose(Throwable throwable)114     public void dispose(Throwable throwable);
115 
116 
117     /**
118      * Destroys the thread pool and tries
119      * to join all created threads immediatly.
120      */
destroy()121     public void destroy();
122 }
123 
124