1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package dalvik.system.profiler;
18 
19 import java.io.IOException;
20 
21 /**
22  * The {@code ThreadSampler} interfaces allows a profiler to choose
23  * between portable and VM specific implementations of thread
24  * sampling.
25  */
26 public interface ThreadSampler {
27 
28     /**
29      * Used to specify the maximum stack depth to collect.
30      */
setDepth(int depth)31     public void setDepth(int depth);
32 
33     /**
34      * Return a stack trace for the current thread limited by the
35      * maximum depth specified by {@link #setDepth setDepth}. May
36      * return null if no sample is availble for the thread, which may
37      * happen in cases such as thread termination. The resulting array
38      * should be copied before the next call to {@code getStackTrace}
39      * if the caller wants to use the results, since the {@code
40      * ThreadSampler} may reuse the array. Note that the elements
41      * themselves are immutable and do not need to be copied.
42      */
getStackTrace(Thread thread)43     public StackTraceElement[] getStackTrace(Thread thread);
44 }
45