001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: * The Original Software is NetBeans. The Initial Developer of the Original
026: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
027: * Microsystems, Inc. All Rights Reserved.
028: *
029: * If you wish your version of this file to be governed by only the CDDL
030: * or only the GPL Version 2, indicate your decision by adding
031: * "[Contributor] elects to include this software in this distribution
032: * under the [CDDL or GPL Version 2] license." If you do not indicate a
033: * single choice of license, a recipient has the option to distribute
034: * your version of this file under either the CDDL, the GPL Version 2 or
035: * to extend the choice of license to its licensees as provided above.
036: * However, if you add GPL Version 2 code and therefore, elected the GPL
037: * Version 2 license, then the option applies only if the new code is
038: * made subject to such option by the copyright holder.
039: */
040:
041: package org.netbeans.lib.profiler.wireprotocol;
042:
043: import java.io.IOException;
044: import java.io.ObjectInputStream;
045: import java.io.ObjectOutputStream;
046:
047: /**
048: * This command, sent by the client, contains the instrumentation parameters (settings) that
049: * can be changed once instrumentation is active and profiling is going on.
050: *
051: * @author Misha Dmitriev
052: * @author Ian Formanek
053: */
054: public class SetChangeableInstrParamsCommand extends Command {
055: //~ Instance fields ----------------------------------------------------------------------------------------------------------
056:
057: private boolean runGCOnGetResultsInMemoryProfiling;
058: private boolean sleepTrackingEnabled;
059: private boolean waitTrackingEnabled;
060: private int nProfiledThreadsLimit;
061: private int objAllocStackSamplingDepth;
062: private int objAllocStackSamplingInterval;
063: private int samplingInterval;
064:
065: //~ Constructors -------------------------------------------------------------------------------------------------------------
066:
067: public SetChangeableInstrParamsCommand(int nProfiledThreadsLimit,
068: int samplingInterval, int objAllocStackSamplingInterval,
069: int objAllocStackSamplingDepth, boolean runGCOnGetResults,
070: boolean waitTrackingEnabled, boolean sleepTrackingEnabled) {
071: super (SET_CHANGEABLE_INSTR_PARAMS);
072: this .nProfiledThreadsLimit = nProfiledThreadsLimit;
073: this .samplingInterval = samplingInterval;
074: this .objAllocStackSamplingInterval = objAllocStackSamplingInterval;
075: this .objAllocStackSamplingDepth = objAllocStackSamplingDepth;
076: this .runGCOnGetResultsInMemoryProfiling = runGCOnGetResults;
077: this .waitTrackingEnabled = waitTrackingEnabled;
078: this .sleepTrackingEnabled = sleepTrackingEnabled;
079: }
080:
081: // Custom serialization support
082: SetChangeableInstrParamsCommand() {
083: super (SET_CHANGEABLE_INSTR_PARAMS);
084: }
085:
086: //~ Methods ------------------------------------------------------------------------------------------------------------------
087:
088: public int getNProfiledThreadsLimit() {
089: return nProfiledThreadsLimit;
090: }
091:
092: public int getObjAllocStackSamplingDepth() {
093: return objAllocStackSamplingDepth;
094: }
095:
096: public int getObjAllocStackSamplingInterval() {
097: return objAllocStackSamplingInterval;
098: }
099:
100: public boolean getRunGCOnGetResultsInMemoryProfiling() {
101: return runGCOnGetResultsInMemoryProfiling;
102: }
103:
104: public int getSamplingInterval() {
105: return samplingInterval;
106: }
107:
108: public boolean getSleepTrackingEnabled() {
109: return sleepTrackingEnabled;
110: }
111:
112: public boolean getWaitTrackingEnabled() {
113: return waitTrackingEnabled;
114: }
115:
116: // For debugging
117: public String toString() {
118: return super .toString()
119: + ", nProfiledThreadsLimit: "
120: + nProfiledThreadsLimit // NOI18N
121: + ", samplingInterval: "
122: + samplingInterval // NOI18N
123: + ", objAllocStackSamplingInterval: "
124: + objAllocStackSamplingInterval // NOI18N
125: + ", objAllocStackSamplingDepth: "
126: + objAllocStackSamplingDepth // NOI18N
127: + ", runGCOnGetResultsInMemoryProfiling: "
128: + runGCOnGetResultsInMemoryProfiling // NOI18N
129: + ", waitTrackingEnabled: " + waitTrackingEnabled // NOI18N
130: + ", sleepTrackingEnabled: " + sleepTrackingEnabled; // NOI18N
131: }
132:
133: void readObject(ObjectInputStream in) throws IOException {
134: nProfiledThreadsLimit = in.readInt();
135: samplingInterval = in.readInt();
136: objAllocStackSamplingInterval = in.readInt();
137: objAllocStackSamplingDepth = in.readInt();
138: runGCOnGetResultsInMemoryProfiling = in.readBoolean();
139: waitTrackingEnabled = in.readBoolean();
140: sleepTrackingEnabled = in.readBoolean();
141: }
142:
143: void writeObject(ObjectOutputStream out) throws IOException {
144: out.writeInt(nProfiledThreadsLimit);
145: out.writeInt(samplingInterval);
146: out.writeInt(objAllocStackSamplingInterval);
147: out.writeInt(objAllocStackSamplingDepth);
148: out.writeBoolean(runGCOnGetResultsInMemoryProfiling);
149: out.writeBoolean(waitTrackingEnabled);
150: out.writeBoolean(sleepTrackingEnabled);
151: }
152: }
|