[squeak-dev] The Trunk: UpdateStream-tpr.11.mcz

Tobias Pape Das.Linux at gmx.de
Tue Feb 19 05:54:34 UTC 2019


> On 19.02.2019, at 04:25, commits at source.squeak.org wrote:
> 
> tim Rowledge uploaded a new version of UpdateStream to project The Trunk:
> http://source.squeak.org/trunk/UpdateStream-tpr.11.mcz
> 
> ==================== Summary ====================
> 
> Name: UpdateStream-tpr.11
> Author: tpr
> Time: 18 February 2019, 7:25:41.894118 pm
> UUID: 00e59d34-daaf-40f8-b4ee-306f21613bfc
> Ancestors: UpdateStream-ul.10
> 
> Part of deprecating HTTPClient for 6.0
> Stop using it
> 
> =============== Diff against UpdateStream-ul.10 ===============
> 
> Item was removed:
> - ----- Method: AutoStart class>>checkForUpdates (in category '*UpdateStream') -----
> - checkForUpdates
> - 	| availableUpdate updateServer |
> - 	HTTPClient isRunningInBrowser ifFalse: [ ^ self processUpdates ].
> - 	availableUpdate := (Smalltalk namedArguments
> - 		at: 'UPDATE'
> - 		ifAbsent: [ '' ]) asInteger.
> - 	availableUpdate ifNil: [ ^ false ].
> - 	updateServer := Smalltalk namedArguments
> - 		at: 'UPDATESERVER'
> - 		ifAbsent:
> - 			[ Smalltalk namedArguments
> - 				at: 'UPDATE_SERVER'
> - 				ifAbsent: [ 'Squeakland' ] ].
> - 	UpdateStreamDownloader default setUpdateServer: updateServer.
> - 	^ SystemVersion checkAndApplyUpdates: availableUpdate!
> 
> Item was changed:
>  ----- Method: UpdateStreamDownloader class>>newUpdatesOn:special:throughNumber: (in category 'fetching updates') -----
>  newUpdatesOn: serverList special: indexPrefix throughNumber: aNumber
>  	"Return a list of fully formed URLs of update files we do not yet have.  Go to the listed servers and look at the file 'updates.list' for the names of the last N update files.  We look backwards for the first one we have, and make the list from there.  tk 9/10/97
>  	No updates numbered higher than aNumber (if it is not nil) are returned " 
> 
>  	| existing out maxNumber |
>  	maxNumber := aNumber ifNil: [99999].
>  	out := OrderedCollection new.
>  	existing := SystemVersion current updates.
>  	serverList do: [:server | | raw doc list char |
> + 		doc := HTTPSocket httpGet: 'http://' , server,indexPrefix,'updates.list'.
> - 		doc := HTTPClient httpGet: 'http://' , server,indexPrefix,'updates.list'.

Why not WebClient directly?
-t


>  		
>  		"test here for server being up"
>  		doc class == RWBinaryOrTextStream ifTrue:
>  			[raw := doc reset; contents.	"one file name per line"
>  			list := self extractThisVersion: raw.
>  			list reverseDo: [:fileName | | ff itsNumber |
>  				ff := (fileName findTokens: '/') last.	"allow subdirectories"
>  				itsNumber := ff initialIntegerOrNil. 
>  				(existing includes: itsNumber)
>  					ifFalse:
>  						[
>  						(itsNumber == nil or: [itsNumber <= maxNumber])
>  							ifTrue:
>  								[out addFirst: 'http://' , server, fileName]]
>  					ifTrue: [^ out]].
>  			((out size > 0) or: [char := doc reset; skipSeparators; next.
>  				(char == $*) | (char == $#)]) ifTrue:
>  					[^ out "we have our list"]].	"else got error msg instead of file"
>  		"Server was down, try next one"].
>  	self inform: 'All code update servers seem to be unavailable'.
>  	^ out!
> 
> Item was changed:
>  ----- Method: UpdateStreamDownloader class>>retrieveUrls:ontoQueue:withWaitSema: (in category 'fetching updates') -----
>  retrieveUrls: urls ontoQueue: queue withWaitSema: waitSema 
>  	"download the given list of URLs. The queue will be loaded alternately  
>  	with url's and with the retrieved contents. If a download fails, the  
>  	contents will be #failed. If all goes well, a special pair with an empty  
>  	URL and the contents #finished will be put on the queue. waitSema is  
>  	waited on every time before a new document is downloaded; this keeps 
>  	the downloader from getting too far  ahead of the main process"
>  	"kill the existing downloader if there is one"
>  	| updateCounter |
>  	UpdateDownloader
>  		ifNotNil: [UpdateDownloader terminate].
>  	updateCounter := 0.
>  	"fork a new downloading process"
>  	UpdateDownloader := [
>  		'Downloading updates' displayProgressFrom: 0 to: urls size during: [:bar |
>  			urls
>  				do: [:url | | front canPeek doc | 
>  					waitSema wait.
>  					queue nextPut: url.
> + 					doc := HTTPSocket httpGet: url.
> - 					doc := HTTPClient httpGet: url.
>  					doc isString
>  						ifTrue: [queue nextPut: #failed.
>  							UpdateDownloader := nil.
>  							Processor activeProcess terminate]
>  						ifFalse: [canPeek := 120 min: doc size.
>  							front := doc next: canPeek.  doc skip: -1 * canPeek.
>  							(front beginsWith: '<!!DOCTYPE') ifTrue: [
>  								(front includesSubstring: 'Not Found') ifTrue: [
>  									queue nextPut: #failed.
>  									UpdateDownloader := nil.
>  									Processor activeProcess terminate]]].
>  						UpdateDownloader ifNotNil: [queue nextPut: doc. updateCounter := updateCounter + 1. bar value: updateCounter]]].
>  			queue nextPut: ''.
>  			queue nextPut: #finished.
>  			UpdateDownloader := nil] newProcess.
>  	UpdateDownloader priority: Processor userInterruptPriority.
>  	"start the process running"
>  	UpdateDownloader resume!
> 
> 



More information about the Squeak-dev mailing list