--- 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();
+ }
}