#
# Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
class name jdk/jfr/consumer/EventStream
header extends java/lang/Object implements java/lang/AutoCloseable flags 601
method name openRepository descriptor ()Ljdk/jfr/consumer/EventStream; thrownTypes java/io/IOException flags 9
method name openRepository descriptor (Ljava/nio/file/Path;)Ljdk/jfr/consumer/EventStream; thrownTypes java/io/IOException flags 9
method name openFile descriptor (Ljava/nio/file/Path;)Ljdk/jfr/consumer/EventStream; thrownTypes java/io/IOException flags 9
method name onEvent descriptor (Ljava/util/function/Consumer;)V flags 401 signature (Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;)V
method name onEvent descriptor (Ljava/lang/String;Ljava/util/function/Consumer;)V flags 401 signature (Ljava/lang/String;Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;)V
method name onFlush descriptor (Ljava/lang/Runnable;)V flags 401
method name onError descriptor (Ljava/util/function/Consumer;)V flags 401 signature (Ljava/util/function/Consumer<Ljava/lang/Throwable;>;)V
method name onClose descriptor (Ljava/lang/Runnable;)V flags 401
method name close descriptor ()V flags 401
method name remove descriptor (Ljava/lang/Object;)Z flags 401
method name setReuse descriptor (Z)V flags 401
method name setOrdered descriptor (Z)V flags 401
method name setStartTime descriptor (Ljava/time/Instant;)V flags 401
method name setEndTime descriptor (Ljava/time/Instant;)V flags 401
method name start descriptor ()V flags 401
method name startAsync descriptor ()V flags 401
method name awaitTermination descriptor (Ljava/time/Duration;)V thrownTypes java/lang/InterruptedException flags 401
method name awaitTermination descriptor ()V thrownTypes java/lang/InterruptedException flags 401

class name jdk/jfr/consumer/RecordedEvent
method name objectAt descriptor (I)Ljava/lang/Object; flags 14

class name jdk/jfr/consumer/RecordedObject
method name objectAt descriptor (I)Ljava/lang/Object; flags 4

class name jdk/jfr/consumer/RecordingStream
header extends java/lang/Object implements java/lang/AutoCloseable,jdk/jfr/consumer/EventStream flags 31
method name <init> descriptor ()V flags 1
method name <init> descriptor (Ljdk/jfr/Configuration;)V flags 1
method name enable descriptor (Ljava/lang/String;)Ljdk/jfr/EventSettings; flags 1
method name setSettings descriptor (Ljava/util/Map;)V flags 1 signature (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V
method name enable descriptor (Ljava/lang/Class;)Ljdk/jfr/EventSettings; flags 1 signature (Ljava/lang/Class<+Ljdk/jfr/Event;>;)Ljdk/jfr/EventSettings;
method name disable descriptor (Ljava/lang/String;)Ljdk/jfr/EventSettings; flags 1
method name disable descriptor (Ljava/lang/Class;)Ljdk/jfr/EventSettings; flags 1 signature (Ljava/lang/Class<+Ljdk/jfr/Event;>;)Ljdk/jfr/EventSettings;
method name setMaxAge descriptor (Ljava/time/Duration;)V flags 1
method name setMaxSize descriptor (J)V flags 1
method name setReuse descriptor (Z)V flags 1
method name setOrdered descriptor (Z)V flags 1
method name setStartTime descriptor (Ljava/time/Instant;)V flags 1
method name setEndTime descriptor (Ljava/time/Instant;)V flags 1
method name onEvent descriptor (Ljava/lang/String;Ljava/util/function/Consumer;)V flags 1 signature (Ljava/lang/String;Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;)V
method name onEvent descriptor (Ljava/util/function/Consumer;)V flags 1 signature (Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;)V
method name onFlush descriptor (Ljava/lang/Runnable;)V flags 1
method name onClose descriptor (Ljava/lang/Runnable;)V flags 1
method name onError descriptor (Ljava/util/function/Consumer;)V flags 1 signature (Ljava/util/function/Consumer<Ljava/lang/Throwable;>;)V
method name close descriptor ()V flags 1
method name remove descriptor (Ljava/lang/Object;)Z flags 1
method name start descriptor ()V flags 1
method name startAsync descriptor ()V flags 1
method name awaitTermination descriptor (Ljava/time/Duration;)V thrownTypes java/lang/InterruptedException flags 1
method name awaitTermination descriptor ()V thrownTypes java/lang/InterruptedException flags 1

