diff options
Diffstat (limited to 'sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java')
-rw-r--r-- | sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java index 41654a417b..4227667e7f 100644 --- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java +++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/TemperatureHumidityServiceImpl.java @@ -20,51 +20,57 @@ package org.apache.tuscany.sca.sample.comet; import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; import org.apache.tuscany.sca.binding.comet.runtime.callback.CometCallback; +import org.apache.tuscany.sca.binding.comet.runtime.callback.Status; import org.apache.tuscany.sca.sample.comet.model.Location; import org.apache.tuscany.sca.sample.comet.model.Response; import org.oasisopen.sca.annotation.Callback; import org.oasisopen.sca.annotation.Service; @Service({ TemperatureService.class, HumidityService.class }) -public class TemperatureHumidityServiceImpl implements TemperatureService, - HumidityService { +public class TemperatureHumidityServiceImpl implements TemperatureService, HumidityService { @Callback protected CometCallback callback; @Override public void getHumidity(final Location location) { - while (callback.isClientConnected()) { - final Response response = new Response(); - response.setDate(new Date()); - response.setData(Helper.randomInt(90) + "%"); - callback.sendResponse(response); - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); + new Timer().scheduleAtFixedRate(new TimerTask() { + + @Override + public void run() { + final Response response = new Response(); + response.setDate(new Date()); + response.setData(Helper.randomInt(90) + "%"); + Status status = callback.sendMessage(response); + if (status == Status.CLIENT_DISCONNECTED) { + System.out.println("Client disconnected from HumidityService."); + this.cancel(); + } } - } + }, 0L, 5000L); } @Override public void getTemperature(final Location location, final int scale) { - while (callback.isClientConnected()) { - final Response response = new Response(); - response.setDate(new Date()); - final String data = "" - + Helper.randomInt(scale == TemperatureService.CELSIUS ? 40 - : 150); - response.setData(data); - callback.sendResponse(response); - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); + new Timer().scheduleAtFixedRate(new TimerTask() { + + @Override + public void run() { + final Response response = new Response(); + response.setDate(new Date()); + final String data = "" + Helper.randomInt(scale == TemperatureService.CELSIUS ? 40 : 150); + response.setData(data); + Status status = callback.sendMessage(response); + if (status == Status.CLIENT_DISCONNECTED) { + System.out.println("Client disconnected from TemperatureService."); + this.cancel(); + } } - } + }, 0L, 3000L); } }
\ No newline at end of file |