src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventConsumer.java
branchJEP-349-branch
changeset 57432 ba454a26d2c1
parent 57386 acdd0dbe37ee
child 57433 83e4343a6984
equal deleted inserted replaced
57428:ef3e241c420f 57432:ba454a26d2c1
    76     private final static VarHandle closedHandle;
    76     private final static VarHandle closedHandle;
    77     private final static VarHandle consumersHandle;
    77     private final static VarHandle consumersHandle;
    78     private final static VarHandle dispatcherHandle;
    78     private final static VarHandle dispatcherHandle;
    79     private final static VarHandle flushActionsHandle;
    79     private final static VarHandle flushActionsHandle;
    80     private final static VarHandle closeActionsHandle;
    80     private final static VarHandle closeActionsHandle;
       
    81     private final static VarHandle orderedHandle;
       
    82     private final static VarHandle reuseHandle;
    81     static {
    83     static {
    82         try {
    84         try {
    83             MethodHandles.Lookup l = MethodHandles.lookup();
    85             MethodHandles.Lookup l = MethodHandles.lookup();
    84             closedHandle = l.findVarHandle(EventConsumer.class, "closed", boolean.class);
    86             closedHandle = l.findVarHandle(EventConsumer.class, "closed", boolean.class);
    85             consumersHandle = l.findVarHandle(EventConsumer.class, "consumers", EventDispatcher[].class);
    87             consumersHandle = l.findVarHandle(EventConsumer.class, "consumers", EventDispatcher[].class);
    86             dispatcherHandle = l.findVarHandle(EventConsumer.class, "dispatcher", LongMap.class);
    88             dispatcherHandle = l.findVarHandle(EventConsumer.class, "dispatcher", LongMap.class);
    87             flushActionsHandle = l.findVarHandle(EventConsumer.class, "flushActions", Runnable[].class);
    89             flushActionsHandle = l.findVarHandle(EventConsumer.class, "flushActions", Runnable[].class);
    88             closeActionsHandle = l.findVarHandle(EventConsumer.class, "closeActions", Runnable[].class);
    90             closeActionsHandle = l.findVarHandle(EventConsumer.class, "closeActions", Runnable[].class);
       
    91             orderedHandle = l.findVarHandle(EventConsumer.class, "ordered", boolean.class);
       
    92             reuseHandle = l.findVarHandle(EventConsumer.class, "reuse", boolean.class);
       
    93 
    89         } catch (ReflectiveOperationException e) {
    94         } catch (ReflectiveOperationException e) {
    90             throw new InternalError(e);
    95             throw new InternalError(e);
    91         }
    96         }
    92     }
    97     }
    93     // set by VarHandle
    98     // set by VarHandle
    98     private LongMap<EventDispatcher[]> dispatcher = new LongMap<>();
   103     private LongMap<EventDispatcher[]> dispatcher = new LongMap<>();
    99     // set by VarHandle
   104     // set by VarHandle
   100     private Runnable[] flushActions = new Runnable[0];
   105     private Runnable[] flushActions = new Runnable[0];
   101     // set by VarHandle
   106     // set by VarHandle
   102     private Runnable[] closeActions = new Runnable[0];
   107     private Runnable[] closeActions = new Runnable[0];
       
   108 
       
   109     protected boolean ordered = true;
       
   110 
       
   111     protected boolean reuse = true;
   103 
   112 
   104     protected InternalEventFilter eventFilter = InternalEventFilter.ACCEPT_ALL;
   113     protected InternalEventFilter eventFilter = InternalEventFilter.ACCEPT_ALL;
   105 
   114 
   106     private final AccessControlContext accessControlContext;
   115     private final AccessControlContext accessControlContext;
   107     private boolean started;
   116     private boolean started;
   327     }
   336     }
   328 
   337 
   329     abstract public void close();
   338     abstract public void close();
   330 
   339 
   331     public void setReuse(boolean reuse) {
   340     public void setReuse(boolean reuse) {
   332 
   341         reuseHandle.setVolatile(this, reuse);
   333     }
   342     }
   334 
   343 
   335     public void setOrdered(boolean ordered) {
   344     public void setOrdered(boolean ordered) {
   336 
   345         orderedHandle.setVolatile(this, ordered);
   337     }
   346     }
   338 
   347 
   339 }
   348 }