launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
branchlauncher
changeset 372 3485327d3080
parent 371 bafc670aa10d
child 381 70d15cf323ba
     1.1 --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Sun Dec 23 18:24:18 2012 +0100
     1.2 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Sun Dec 23 23:30:06 2012 +0100
     1.3 @@ -54,6 +54,7 @@
     1.4   */
     1.5  public class Bck2BrwsrLauncher {
     1.6      private static final Logger LOG = Logger.getLogger(Bck2BrwsrLauncher.class.getName());
     1.7 +    private static final MethodInvocation END = new MethodInvocation(null, null);
     1.8      private Set<ClassLoader> loaders = new LinkedHashSet<>();
     1.9      private BlockingQueue<MethodInvocation> methods = new LinkedBlockingQueue<>();
    1.10      private long timeOut;
    1.11 @@ -153,10 +154,11 @@
    1.12                  }
    1.13                  
    1.14                  MethodInvocation mi = methods.take();
    1.15 -                if (mi == null) {
    1.16 +                if (mi == END) {
    1.17                      response.getWriter().write("");
    1.18                      wait.countDown();
    1.19                      cnt = 0;
    1.20 +                    LOG.log(Level.INFO, "End of data reached. Exiting.");
    1.21                      return;
    1.22                  }
    1.23                  
    1.24 @@ -177,6 +179,7 @@
    1.25      }
    1.26      
    1.27      public void shutdown() throws InterruptedException, IOException {
    1.28 +        methods.offer(END);
    1.29          for (;;) {
    1.30              int prev = methods.size();
    1.31              if (wait.await(timeOut, TimeUnit.MILLISECONDS)) {