2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License (the "License"). 2N/A * You may not use this file except in compliance with the License. 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 2N/A * Use is subject to license terms. 2N/A * ident "%Z%%M% %I% %E% SMI" 2N/A * Description of control flow across function boundaries including 2N/A * direction (entry or return) and depth in the call stack. This 2N/A * information is added to {@link ProbeData} instances only when the 2N/A * {@link Option#flowindent flowindent} option is used: 2N/A * Consumer consumer = new LocalConsumer(); 2N/A * consumer.setOption(Option.flowindent); 2N/A * <b>Examples</b></a> section of the <b>{@code fbt} 2N/A * Provider</b> chapter of the <i>Solaris Dynamic Tracing Guide</i>. 2N/A * @see Consumer#setOption(String option) 2N/A * @see Option#flowindent 2N/A * @author Tom Erickson 2N/A * Indicates direction of flow across a boundary, such as entering 2N/A * or returing from a function. 2N/A /** Entry into a function. */ 2N/A /** Return from a function. */ 2N/A /** No function boundary crossed. */ 2N/A * Need to prevent DefaultPersistenceDelegate from using 2N/A * overridden equals() method, resulting in a 2N/A * StackOverFlowError. Revert to PersistenceDelegate 2N/A * implementation. See 2N/A * Creates a {@code Flow} instance with the given flow kind and 2N/A * depth. Supports XML persistence. 2N/A * @param flowKindName name of enumeration value indicating the 2N/A * @param flowDepth current depth in the call stack 2N/A * @throws IllegalArgumentException if there is no {@code Flow.Kind} 2N/A * value with the given name or if the given {@code flowDepth} is 2N/A * @throws NullPointerException if the given {@code Flow.Kind} name 2N/A * Gets the direction of the flow of control (entry or return) 2N/A * across a function boundary. 2N/A * @return non-null flow kind indicating direction of flow (entry or 2N/A * return) across a function boundary 2N/A * Gets the current depth in the call stack. 2N/A * @return A non-negative sum of the function entries minus the 2N/A * function returns up until the moment described by this control 2N/A * flow instance. For example, if the traced flow of control 2N/A * entered two functions but only returned from one, the depth is 2N/A * one (2 entries minus 1 return). 2N/A * Compares the specified object with this {@code Flow} instance for 2N/A * equality. Defines equality as having the same flow kind and 2N/A * @return {@code true} if and only if the specified object is of 2N/A * type {@code Flow} and both instances have equal flow kind and 2N/A * Overridden to ensure that equal instances have equal hash codes. 2N/A // check class invariants 2N/A * Gets a string representation of this {@code Flow} instance useful 2N/A * for logging and not intended for display. The exact details of 2N/A * the representation are unspecified and subject to change, but the 2N/A * following format may be regarded as typical: 2N/A * class-name[property1 = value1, property2 = value2]