Professional Documents
Culture Documents
DirWatcher Adapted For Multiple Watchers
DirWatcher Adapted For Multiple Watchers
agent;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import com.pgc.campaign.manager.common.CampaignManagerConfiguration;
import com.pgc.campaign.manager.core.CoreEngine;
@SuppressWarnings("unchecked")
static <T> WatchEvent<T> cast(WatchEvent<?> event) {
return (WatchEvent<T>) event;
}
/**
* Creates a WatchService and registers the given directory
*/
public DirWatcher(Path dir, String tag) throws IOException {
this.tag = tag;
this.dir = dir;
this.watcher = FileSystems.getDefault().newWatchService();
this.key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
}
public void run() {
try {
for (;;) {
// wait for key to be signalled
WatchKey key = watcher.take();
if (this.key != key) {
System.err.println("WatchKey not recognized!");
continue;
}
if (ev.kind() == ENTRY_CREATE) {
System.out.println("tag = " + tag + " filename = " +
filename);
executeBlaster( filename );
}
}
// reset key
if (!key.reset()) {
break;
}
}
} catch (InterruptedException x) {
return;
}
}
//executor.awaitTermination(10000, TimeUnit.SECONDS);
//executor.shutdownNow();
}
CoreEngine.startup();
logger.info(MethodHandles.lookup().lookupClass().getSimpleName() + "
started.");
try {
CoreEngine.getGlobalTimer().start();
CoreEngine.getTimer().reset();
logger.info(MethodHandles.lookup().lookupClass().getSimpleName() + "
sleeping for " + CampaignManagerConfiguration.FOLDER_WATCHER_SLEEP + "
milliseconds...");
Thread.sleep(CampaignManagerConfiguration.FOLDER_WATCHER_SLEEP);
CoreEngine.getGlobalTimer().stop();
logger.info(MethodHandles.lookup().lookupClass().getSimpleName() + "
sleep done. Elapsed time: " + CoreEngine.getGlobalTimer());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CoreEngine.getGlobalTimer().start();
CoreEngine.getTimer().reset();
logger.info(MethodHandles.lookup().lookupClass().getSimpleName() + "
executing blaster...");
try {
//System.out.println("Blaster Module is Disabled!!!");
CoreEngine.executeBlaster(filename);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CoreEngine.getGlobalTimer().stop();
logger.info(MethodHandles.lookup().lookupClass().getSimpleName() + "
finished. Elapsed time: " + CoreEngine.getGlobalTimer());