1 //
2 // ========================================================================
3 // Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4 // ------------------------------------------------------------------------
5 // All rights reserved. This program and the accompanying materials
6 // are made available under the terms of the Eclipse Public License v1.0
7 // and Apache License v2.0 which accompanies this distribution.
8 //
9 // The Eclipse Public License is available at
10 // http://www.eclipse.org/legal/epl-v10.html
11 //
12 // The Apache License v2.0 is available at
13 // http://www.opensource.org/licenses/apache2.0.php
14 //
15 // You may elect to redistribute this code under either of these licenses.
16 // ========================================================================
17 //
18
19
20 package org.eclipse.jetty.monitor.jmx;
21
22 import static java.util.UUID.randomUUID;
23
24 /* ------------------------------------------------------------ */
25 /**
26 * EventTrigger
27 *
28 * Abstract base class for all EventTrigger implementations.
29 * Used to determine whether the necessary conditions for
30 * triggering an event are present.
31 */
32 public abstract class EventTrigger
33 {
34 private final String _id;
35
36 /* ------------------------------------------------------------ */
37 /**
38 * Construct an event trigger
39 */
40 public EventTrigger()
41 {
42 _id = randomUUID().toString();
43 }
44
45 /* ------------------------------------------------------------ */
46 /**
47 * Retrieve the identification string of the event trigger
48 *
49 * @return unique identification string
50 */
51 public String getID()
52 {
53 return _id;
54 }
55
56 /* ------------------------------------------------------------ */
57 /**
58 * Abstract method to verify if the event trigger conditions
59 * are in the appropriate state for an event to be triggered
60 *
61 * @return true to trigger an event
62 */
63 public abstract boolean match(long timestamp) throws Exception;
64
65 /* ------------------------------------------------------------ */
66 /**
67 * Retrieve the event state associated with specified invocation
68 * of the event trigger match method
69 *
70 * @param timestamp time stamp associated with invocation
71 * @return event state or null if not found
72 */
73 public abstract EventState<?> getState(long timestamp);
74 }