<div dir="ltr"><div>The Windows implementation seems to have a poller but doesn't seem to use executors from what I can see (assuming I'm looking in the correct place):<br><a href="http://cr.openjdk.java.net/~alanb/7006126/webrev.00/raw_files/new/src/windows/classes/sun/nio/fs/WindowsWatchService.java">http://cr.openjdk.java.net/~alanb/7006126/webrev.00/raw_files/new/src/windows/classes/sun/nio/fs/WindowsWatchService.java</a><br>

<br></div>The run() method at the end of that file invokes some "GetQueuedCompletionStatus" function/method which seems to wake up on the event.  Maybe that's helpful to you, I'm not experienced in this area.<br>

<br><div class="gmail_extra">HTH,<br>Christopher<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 17 August 2014 16:26, Michael Hall <span dir="ltr"><<a href="mailto:mik3hall@gmail.com" target="_blank">mik3hall@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div class=""><div>On Aug 9, 2014, at 4:57 PM, Christopher Brown <<a href="mailto:christopherbrown06@gmail.com" target="_blank">christopherbrown06@gmail.com</a>> wrote:</div>

<br><blockquote type="cite">If there are licencing issues, maybe a standalone watcher would be enough?  Looking at the command line you used, I get the impression that you had to reimplement a significant par of the API (Paths and stuff) for this service (and other Mac-specific stuff).<br>

<br></blockquote><div><br></div></div>Still looking at this a little bit. I haven't figured out the KQueue issues yet but I was thinking of trying with <div><a href="https://github.com/bdkjones/VDKQueue" target="_blank">https://github.com/bdkjones/VDKQueue</a></div>

<div>Apparently this is a updated version of UKKQueue which I based mine on. I thought maybe going with the notification communication (I think UKKQueue did this too but I changed it), instead of a JNI callback might work. </div>

<div><br></div><div>Another alternative did occur to me after looking at that a little bit for what might be a really simple 'real time' WatchService with minimal changes.</div><div>That code included…</div><div>
[[NSWorkspace sharedWorkspace] noteFileSystemChanged:fpath];</div>
<div><br></div><div>In looking at the API documentation I thought this was sort of deprecated in favor of FSEvents.</div><div>However, as long as it's there couldn't you use that to signal a change and then post the polling watch service to 'wakeup' immediately and process any changes?</div>

<div>Looking a little bit at the polling code (not sure if totally current)…</div><div><a href="http://cr.openjdk.java.net/~alanb/7006126/webrev.00/src/share/classes/sun/nio/fs/PollingWatchService.java.html" target="_blank">http://cr.openjdk.java.net/~alanb/7006126/webrev.00/src/share/classes/sun/nio/fs/PollingWatchService.java.html</a></div>

<div>that has…</div><div><br></div><div><div>                // create the periodic task</div><div> 290                 Runnable thunk = new Runnable() { public void run() { poll(); }};</div><div> 291                 this.poller = scheduledExecutor</div>

<div> 292                     .scheduleAtFixedRate(thunk, period, period, TimeUnit.SECONDS);</div><div><div><br></div><div>I haven't gotten into Executor's yet in any of my java. Is there any way to cause that to fire immediately? Or otherwise externally fire an immediate non-scheduled poll()? </div>

<div>The big knock on the Polling code seems to be that it is polling, not that it doesn't handle changes correctly or quickly enough. Wouldn't this address that and still mostly rely on the current licensed and supported code. </div>

<div><br></div><div>Anyhow, I might try to see if I can include something like that as another 'watch service' with my code. </div><div class=""><div><br></div><div><br></div><div><div>
<span style="border-collapse:separate;border-spacing:0px"><span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">

<span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">

<div style="font-weight:normal">Michael Hall</div><div style="font-weight:normal"><br></div><div><b>trz<span> </span></b>nio.2 for OS X <a href="http://www195.pair.com/mik3hall/index.html#trz" style="font-weight:normal" target="_blank">http://www195.pair.com/mik3hall/index.html#trz</a></div>

<div style="font-weight:normal"><br></div><div><b>HalfPipe<span> </span></b>Java 6/7 shell app <a href="http://www195.pair.com/mik3hall/index.html#halfpipe" target="_blank">http://www195.pair.com/mik3hall/index.html#halfpipe</a></div>

<div><br></div><div><b>AppConverter<span> </span></b>convert Apple jvm to openjdk apps <a href="http://www195.pair.com/mik3hall/index.html#appconverter" target="_blank">http://www195.pair.com/mik3hall/index.html#appconverter</a></div>

</div></span><br></div></span><br></span><br>
</div>
<br><div><div><br></div></div></div></div></div></div></div></blockquote></div><br></div></div>