diff -r 2c3cc4b01880 -r c16ac7a2eba4 src/jdk.jfr/share/classes/jdk/jfr/internal/Utils.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/Utils.java Wed Oct 30 16:14:56 2019 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/Utils.java Wed Oct 30 19:43:52 2019 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2019, 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 @@ -43,6 +43,7 @@ import java.lang.reflect.Modifier; import java.nio.file.Path; import java.time.Duration; +import java.time.Instant; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; @@ -65,17 +66,17 @@ public final class Utils { + private static final Object flushObject = new Object(); private static final String INFINITY = "infinity"; - - private static Boolean SAVE_GENERATED; - public static final String EVENTS_PACKAGE_NAME = "jdk.jfr.events"; public static final String INSTRUMENT_PACKAGE_NAME = "jdk.jfr.internal.instrument"; public static final String HANDLERS_PACKAGE_NAME = "jdk.jfr.internal.handlers"; public static final String REGISTER_EVENT = "registerEvent"; public static final String ACCESS_FLIGHT_RECORDER = "accessFlightRecorder"; + private final static String LEGACY_EVENT_NAME_PREFIX = "com.oracle.jdk."; - private final static String LEGACY_EVENT_NAME_PREFIX = "com.oracle.jdk."; + private static Boolean SAVE_GENERATED; + public static void checkAccessFlightRecorder() throws SecurityException { SecurityManager sm = System.getSecurityManager(); @@ -595,4 +596,33 @@ String idText = recording == null ? "" : "-id-" + Long.toString(recording.getId()); return "hotspot-" + "pid-" + pid + idText + "-" + date + ".jfr"; } + + public static void takeNap(long millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + // ok + } + } + + public static void notifyFlush() { + synchronized (flushObject) { + flushObject.notifyAll(); + } + } + + public static void waitFlush(long timeOut) { + synchronized (flushObject) { + try { + flushObject.wait(timeOut); + } catch (InterruptedException e) { + // OK + } + } + + } + + public static long timeToNanos(Instant timestamp) { + return timestamp.getEpochSecond() * 1_000_000_000L + timestamp.getNano(); + } }