@Override public ScheduledExecutors.Signal call() { // Run one more time even if the monitor was removed, in case there's some extra data to flush if (monitor.monitor(emitter) && hasMonitor(monitor)) { return ScheduledExecutors.Signal.REPEAT; } else { removeMonitor(monitor); return ScheduledExecutors.Signal.STOP; } } }
@Override public void start() { for (Monitor monitor : monitors) { monitor.start(); } }
@Override public void stop() { for (Monitor monitor : monitors) { monitor.stop(); } }
@Test public void testSetFeed() { String feed = "testFeed"; StubServiceEmitter emitter = new StubServiceEmitter("dev/monitor-test", "localhost:0000"); Monitor m = Monitors.createCompoundJvmMonitor(ImmutableMap.of(), feed); m.start(); m.monitor(emitter); m.stop(); checkEvents(emitter.getEvents(), feed); }
public void removeMonitor(final Monitor monitor) { synchronized (lock) { monitors.remove(monitor); monitor.stop(); } }
private void startMonitor(final Monitor monitor) { synchronized (lock) { monitor.start(); ScheduledExecutors.scheduleAtFixedRate( exec, config.getEmitterPeriod(), new Callable<ScheduledExecutors.Signal>() { @Override public ScheduledExecutors.Signal call() { // Run one more time even if the monitor was removed, in case there's some extra data to flush if (monitor.monitor(emitter) && hasMonitor(monitor)) { return ScheduledExecutors.Signal.REPEAT; } else { removeMonitor(monitor); return ScheduledExecutors.Signal.STOP; } } } ); } }
@Override public boolean monitor(final ServiceEmitter emitter) { return shouldReschedule(Lists.transform(monitors, monitor -> monitor.monitor(emitter))); }
@LifecycleStop public void stop() { synchronized (lock) { if (!started) { return; } started = false; for (Monitor monitor : monitors) { monitor.stop(); } } }
@Override public void start() { for (Monitor monitor : monitors) { monitor.start(); } }
@Override public boolean monitor(final ServiceEmitter emitter) { return shouldReschedule(Lists.transform(monitors, monitor -> monitor.monitor(emitter))); }
@Override public void stop() { for (Monitor monitor : monitors) { monitor.stop(); } }
private void startMonitor(final Monitor monitor) { synchronized (lock) { monitor.start(); ScheduledExecutors.scheduleAtFixedRate( exec, config.getEmitterPeriod(), new Callable<ScheduledExecutors.Signal>() { @Override public ScheduledExecutors.Signal call() { // Run one more time even if the monitor was removed, in case there's some extra data to flush if (monitor.monitor(emitter) && hasMonitor(monitor)) { return ScheduledExecutors.Signal.REPEAT; } else { removeMonitor(monitor); return ScheduledExecutors.Signal.STOP; } } } ); } }
@Override public ScheduledExecutors.Signal call() { // Run one more time even if the monitor was removed, in case there's some extra data to flush if (monitor.monitor(emitter) && hasMonitor(monitor)) { return ScheduledExecutors.Signal.REPEAT; } else { removeMonitor(monitor); return ScheduledExecutors.Signal.STOP; } } }
public void removeMonitor(final Monitor monitor) { synchronized (lock) { monitors.remove(monitor); monitor.stop(); } }
@LifecycleStop public void stop() { synchronized (lock) { if (!started) { return; } started = false; for (Monitor monitor : monitors) { monitor.stop(); } } }