summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.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/PrecipitationServiceImpl.java30
1 files changed, 17 insertions, 13 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/PrecipitationServiceImpl.java b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java
index 4798a3457e..2c064a3ae6 100644
--- a/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java
+++ b/sca-java-2.x/contrib/samples/learning-more/binding-comet/weather-webapp/src/main/java/org/apache/tuscany/sca/sample/comet/PrecipitationServiceImpl.java
@@ -20,8 +20,11 @@
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;
@@ -31,22 +34,23 @@ import org.oasisopen.sca.annotation.Service;
public class PrecipitationServiceImpl implements PrecipitationService {
@Callback
- protected CometCallback callback;
+ protected CometCallback client;
@Override
public void getPrecipitation(final Location location) {
- while (callback.isClientConnected()) {
- Response response = new Response();
- response.setDate(new Date());
- response.setData(Helper.randomInt(100) + "%");
-
- callback.sendResponse(response);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
+ new Timer().scheduleAtFixedRate(new TimerTask() {
+
+ @Override
+ public void run() {
+ Response response = new Response();
+ response.setDate(new Date());
+ response.setData(Helper.randomInt(100) + "%");
+ Status status = client.sendMessage(response);
+ if (status == Status.CLIENT_DISCONNECTED) {
+ System.out.println("Client disconnected from PrecipitationService.");
+ this.cancel();
+ }
}
- }
+ }, 0L, 1000L);
}
-
}