download status reporting

Devin Asay devin_asay at byu.edu
Thu Aug 3 12:42:47 EDT 2006


On Aug 3, 2006, at 4:55 AM, Dave Cragg wrote:

>
> On 3 Aug 2006, at 08:51, Devin Asay wrote:
>
>> Has anyone used libURLSetStatusCallback successfully to monitor  
>> the progress of downloads from a remote server? I am using it in  
>> conjunction with libURLDownloadToFile and it seems to PARTLY work.  
>> I use it to update a progress bar, and that is working okay. At  
>> the same time I echo the status to a text field, but that part  
>> seems to work once and then never change (it reports "requested"  
>> then never changes, for example).
>
> This seems odd. Presumably the updating of the progress bar uses  
> the same text you want to display in the text field. Can you show  
> us the script you are using?

OK, the download works, and the download progress is updated  
correctly in the progress bar and the text field, but now when the  
download finishes, the URLstatus seems to be "stuck" on the last  
reported "loading" message. If I check the urlStatus for the just- 
concluded download, I get:

    loading,180902350,180902350

This effectively blocks all subsequent downloads. If I start another  
the urlStatus reports "queued" for that download.

If I check the pendingMessages I get:

    45839,1154622702.764941,ulTickleMe,button id 1037 of group id  
1016 of card id 1002 of stack "/Applications/Revolution/Revolution  
Enterprise/2.7.2-gm-1/Toolset/revlibrary.rev"

The only way to clear all of this is to quit Rev and relaunch.

Here is the scripting I am using to initiate the download (from an  
FTP server):

     libURLDownloadToFile tDLURL, (the DLfolder of this cd & "/" &  
the titleToDL of me), "downloadComplete"
     libURLSetStatusCallback DLprogress,the long id of me

That calls this handler:

on DLprogress pDLurl,pStatus
   if pStatus contains "loading" then
     put item -1 of pStatus into tBytestotal
     put item 2 of pStatus into tBytesReceived
     set the endvalue of scrollbar "dlProgress" to tBytestotal
     set the thumbpos of scrollbar "dlProgress" to item 2 of pStatus
     set the numberformat to "0.##"
     put (tBytesReceived / 1000000) & " MB of " & (tBytestotal /  
1000000) & " MB" into fld "dlMsg"
     if tBytesReceived >= tBytestotal then
       put "(DONE) " before line (the hilitedLine of fld "orderlist")  
of fld "orderlist"
       answer information "Download complete."
       dowloadComplete
     end if
   else if pStatus is "contacted" then
     put "Server contacted." into fld "dlMsg"
   else if pStatus is "requested" then
     put "Requesting file." into fld "dlMsg"
   else if pStatus is "queued" then
     put "Waiting for previous download to finish." into fld "dlMsg"
   else if pStatus is "downloaded" then
     put "Download complete." into fld "dlMsg"
     downloadComplete  #### I'm calling this to try to ensure it gets  
called!
   else if pStatus is "eror" then
     put "Error during download." into fld "dlMsg"
     answer error "The download encountered an error and could not  
continue. Aborted."
     downloadComplete
   else if pStatus is "timeout" then
     put "Server timed out." into fld "dlMsg"
     answer error "The download server timed out. Download aborted."
     downloadComplete
   end if
end DLprogress

The downloadComplete handler is simple:

on downloadComplete
   answer information "The file " & the titleToDL of btn "download" &  
" has downloaded successfully."
   hide group "dlStatusGrp"
end downloadComplete

Oddly enough, the first statement gets executed, but not the second.  
I'm stumped. Am I just doing something wrong?

Any ideas?

Regards,
Devin

Devin Asay
Humanities Technology and Research Support Center
Brigham Young University




More information about the use-livecode mailing list