Hi David,

On 4/19/2015 9:51 AM, David Vanderson wrote:
On 04/18/2015 12:34 PM, George Neuner wrote:
However, to do this, I have to keep the initial id listacross multiple requestsand thatis where I've run into trouble. Thus far, I haven't had to use web server continuations. It seems like send/suspend does not allow the browser to provideadditional arguments (like paging direction).
The trick with using the continuations is you don't pass any arguments through the url. All information is stored in local variables that are captured automatically by the continuation. The url will be generated for you, it just points to a continuation stored on the server. Does that make sense? It's hard to wrap your brain around at first.

I understand continuations in Scheme - it's the mechanism of this URL/dispatch that I'm having a slight problem with. (see below)


send/suspend/dispatch looks like it will do what I want, however Ineed to communicate the URLs to the browser in JSONand it (superficially) appears as if embed/url is meant to work in generated HTML?
Youneed to use a different response function.See theattached codefor an example.Look at the docs for 'response/xexpr' to see what it does.

I know I need a different response function. The question was whether embed/url is tied to HTML or can be used in a different context. The documentation (6.1.1) says:

"When used inside page <mailbox:///C:/Users/GW/Documents/Eudora/local/Mail/Local%20Folders/Drafts?number=0&part=1.2.2&filename=page.html> syntactically, a rename transformer for the procedure embedding function; otherwise, a syntax error."

That suggests embed/url can be used only in (X)HTML responses and that I need to use something else to create dispatch URLs in regular code.


The final problem is how to ensure that I eventually get to send/finishand clean up my thread. This particular function is expected to be executed quite often. Does the browser app have to invoke a URL that deliberately ends the thread or will the thread end if/whenits continuations timeout?
What do you need to clean up? To be clear, there isn't a thread that keeps running - the continuation is just some data, and like Jay said, it will eventually be cleaned up. If you want to remove the continuations manually, call send/forward or send/finish. See the attached code. In particular, try running it, and then copying the url to a second browser window. You'll see how two users have different continuations.

My understanding is that serve/servlet executes dispatched functions in separate threads. And I do see server multi-threading in practice - e.g., a quick sequence of XHR calls made by the browser finishing in different order. Timestamped in my application log as well as seen at the browser.

So when I send/suspend* there will be a thread left suspended. Will that thread context be cleaned up if the continuation expires? And can I get a notification of which thread is involved? Or better yet, get the thread restarted at yet another point so I can log that it has finished processing. Are the threads just nuked invisibly or are they terminated by an exception that I can catch?


George

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to