Asynchronous upload via post?
Dave Cragg
dave.cragg at lacscentre.co.uk
Wed Jun 13 04:54:18 EDT 2007
On 12 Jun 2007, at 17:11, David Bovill wrote:
> You can load a url and you can do asynch ftp upload - but how about
> if you
> want to send a large amount of data to a remote location without
> using ftp?
> Can you do an "asynch post"? I guess you could do an asynch ftp
> upload and
> then a quick sychronous post on completion - any thoughts?
If by "asynch" you mean keeping your application alive and running
while the posts take place, it should be possible. The posts would
occur sequentially, but your application should still be responsive
during the transfers. Although "post" is described as "blocking" it
only blocks the script it is called in. Other scripts can run at the
same time.
The approach taken would depend on your circumstances, but the idea
is to set up some "out of synch" psuedo thread to handle the posts.
The simplest way to do this might be using a "send ... in time"
message. You can use liburlSetStatusCallback to display progress if
needed.
Rough idea (untested):
local postUrlQ
local asynchPostRunning = false
on someHandler
---code
-- code
asynchPost someUrl, someData
-- code
-- code
end someHandler
on asynchPost purl, pData
put pUrl & return after postUrlQ
if not asynchPostRunning then
send asynchPostHandler to me in 0 milliseconds
end if
end asynchPost pUrl
on asynchPostHandler
if not asynchPostRunning AND the number of lines of postUrlQ > 0 then
put line 1 of postUrlQ into tUrl
delete line 1 of tUrl
put true into asynchPostRunning
post pData to url pUrl
put it into tRetData
put the result into tRes
if tRes <> empty then
## error handling
## maybe send a callback message
else
## success routine, do something with tData
## maybe send callback
end if
put false into asynchPostRunning
if the number of lines of postUrlQ > 0 then
send asynchPostHandler to me in 0 milliseconds
end if
end if
end asynchPostHandler
More information about the use-livecode
mailing list