SWI-Prolog / pengines

Pengine and Prolog scratchpad
BSD 2-Clause "Simplified" License
57 stars 16 forks source link

method of pulling output is painful #19

Open Anniepoo opened 8 years ago

Anniepoo commented 8 years ago

Having the httpRequest for pull_response wait until there is some is painful.

See for example the code

          if (proof.getNearestInt("X") < 3) {  // change this to a larger number to see it hang
              // this hangs on the last proof
              // This is referred to in https://github.com/SWI-Prolog/pengines/issues/19
              String out = io.getOutput();
              if(out != null) {
                  System.out.println("I got " + out + " from the server");
              }
          }

in ManualAsk.java in JavaPengines.

Am I off in the weeds here, or is this just painful?

JanWielemaker commented 8 years ago

There is little choice given the one-direction HTTP protocol. So, if you get a server response, it may either be a binding or output (or destroy, ...) You can handle this all quite well using event based programming. If you want a waiting loop, it might be an idea to install a callback for handling output.

This, if I understood your question ok ...