Here is a sample. It might contain errors but displays what I
basically tried to do.


// Obviously there is an asynchronous version of this interface
public interface MyService extends RemoteService {
        public String requestStatusMessage();

        public void doLengthyComputation();
}

MyServiceAsync service = (MyServiceAsync) GWT.create(MyService.class);
Timer t = new MyTimer();

public void callMainService() {
        t.scheduleRepeating(1000);
        ServiceDefTarget endpoint = (ServiceDefTarget) service;
        endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "mymodule");
        AsyncCallback<String> callback = new AsyncCallback<String>() {
                // whatever the outcome, stop the polling timer
                public void onFailure(Throwable caught) {
                        t.cancel();
                        // do something to show failure
                }

                public void onSuccess(String result) {
                        t.cancel();
                        // do something else
                }
                // start the polling timer right before calling the main service
                t.run();
                service.doLengthyComputation();
}

public class MyTimer extends Timer {
        public void run() {
                poll();
        }

        public void poll() {
                ServiceDefTarget endpoint = (ServiceDefTarget) service;
                endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + 
"mymodule");
                AsyncCallback<String> callback = new AsyncCallback<String>() {
                        public void onFailure(Throwable caught) {
                                System.out.println("polling failed");
                        }

                        public void onSuccess(String result) {
                                System.out.println(result);
                        }
                service.requestStatusMessage();
        }
}

On 23 Set, 13:17, Lothar Kimmeringer <[EMAIL PROTECTED]> wrote:
> Hello,
>
> Palietta schrieb:
>
> > So I created a client-side Timer which, every second, polls another
> > remote service that simply returns this state variable. This timer is
> > started right before the main service is called, and is halted after
> > the service returns.
>
> > Being these calls asynchronous, this method didn't work. All scheduled
> > Timer calls returned after the main service altogether.
>
> > I know it might be a dumb question, but it would really be helpful for
> > me to be able to provide the user with continued feedback on the state
> > of the service they called.
>
> Can you provide some source how you call the long running task
> and create the timer? I have some ideas why this fails, but
> it's only guessing without knowing more.
>
> Independent from that you might google for "Comet GWT". This
> might be a solution for you as well.
>
> Regards, Lothar
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to