[squeak-dev] [ANN] Aida 6.3 Holiday Edition, first beta

Janko Mivšek janko.mivsek at eranova.si
Wed Jul 13 20:49:17 UTC 2011


Hi David,

I prepared a new Aida which should work now well on WebSocket enabled
browsers. Download plain Pharo one-click then:

Gofer new
   squeaksource: 'MetacelloRepository';
   package: 'ConfigurationOfAida';
   load.

 (Smalltalk at: #ConfigurationOfAida) load.	

Then open http://localhost:8888

I'd be glad if you report the status of this Aida on different browsers
on Mac.

Best regards
Janko

S, David Shaffer piše:
> 
> On Jul 13, 2011, at 10:37 AM, Janko Mivšek wrote:
> 
>>>
>>
>> Hi David, yes I'm just resolving this problem, on WebSocket enabled
>> browsers only and from default installation. Fast meantime solution is
>> to evaluate:
>>
>> 	AIDASite default host: 'localhost' ip: 'localhost' port: 8888.
>> 	SwazooServer stop; start.
>>
>> Let me know it this solves for you the problem
> 
> Thanks.  Here's what I'm finding under OS X Snow Leopard with the one-click Pharo image Aida 6.1 beta1:
> 
> Chrome (12.0): none of the AJAX demo features seem to work (with or without evaluating code above)
> Firefox (5.0): all AJAX features work fine
> Safari (5.0.5): Causes the attached walkback when visiting Aida home page
> 
> David
> 
> 13 July 2011 10:53:52 am
> 
> VM: Mac OS - intel - 1068 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.35] Aida 1.0
> Image: Pharo1.3 [Latest update: #13286]
> 
> AIDASite(Object)>>halt
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> 
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> [:exception | 
> self halt.
> 	exception class == HTTPException
> 		ifTrue: [^ exception response].
> 	exception class == SpSocketError
> 		ifTrue: [self reportSocketError: exception request: aRequest]
> 		ifFalse: [self reportException: exception.
> 			exception defaultAction].
> 	errorResponse := self httpResponseOnException: exception.
> 	HTTPException raiseResponse: errorResponse.
> 	^ errorResponse] in AIDASite>>answerTo:
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> <<error during printing>
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> BlockClosure>>cull:
> 	Receiver: [:exception | 
> self halt.
> 	exception class == HTTPException
> 		ifTrue: [^ exception respons...etc...
> 	Arguments and temporary variables: 
> 		anArg: 	MessageNotUnderstood: ByteArray>>asByteString
> 	Receiver's instance variables: 
> 		outerContext: 	AIDASite>>answerTo:
> 		startpc: 	292
> 		numArgs: 	1
> 
> [(self tempAt: 2)
> 		cull: exception] in MethodContext(ContextPart)>>handleSignal:
> 	Receiver: BlockClosure>>on:do:
> 	Arguments and temporary variables: 
> 		exception: 	MessageNotUnderstood: ByteArray>>asByteString
> 	Receiver's instance variables: 
> 		sender: 	AIDASite>>answerTo:
> 		pc: 	17
> 		stackp: 	3
> 		method: 	(BlockClosure>>#on:do: "a CompiledMethod(106692608)")
> 		closureOrNil: 	nil
> 		receiver: 	[self log: self cr
> 			, (self logStringFor: aRequest) , self cr , '  ...etc...
> 
> BlockClosure>>ensure:
> 	Receiver: [(self tempAt: 2)
> 		cull: exception]
> 	Arguments and temporary variables: 
> 		aBlock: 	[self tempAt: 3 put: true]
> 		complete: 	nil
> 		returnValue: 	nil
> 	Receiver's instance variables: 
> 		outerContext: 	MethodContext(ContextPart)>>handleSignal:
> 		startpc: 	98
> 		numArgs: 	0
> 
> MethodContext(ContextPart)>>handleSignal:
> 	Receiver: BlockClosure>>on:do:
> 	Arguments and temporary variables: 
> 		exception: 	MessageNotUnderstood: ByteArray>>asByteString
> 		val: 	nil
> 	Receiver's instance variables: 
> 		sender: 	AIDASite>>answerTo:
> 		pc: 	17
> 		stackp: 	3
> 		method: 	(BlockClosure>>#on:do: "a CompiledMethod(106692608)")
> 		closureOrNil: 	nil
> 		receiver: 	[self log: self cr
> 			, (self logStringFor: aRequest) , self cr , '  ...etc...
> 
> MessageNotUnderstood(Exception)>>signal
> 	Receiver: MessageNotUnderstood: ByteArray>>asByteString
> 	Arguments and temporary variables: 
> 
> 	Receiver's instance variables: 
> 		messageText: 	nil
> 		tag: 	nil
> 		signaler: 	#[104 60 80 88 247 106 229 254 95 102 245 6 229 63 220 173]
> 		signalContext: 	MessageNotUnderstood(Exception)>>signal
> 		handlerContext: 	BlockClosure>>on:do:
> 		outerContext: 	nil
> 		message: 	asByteString
> 		receiver: 	#[104 60 80 88 247 106 229 254 95 102 245 6 229 63 220 173]
> 		reachedDefaultHandler: 	false
> 
> ByteArray(Object)>>doesNotUnderstand: #asByteString
> 	Receiver: #[104 60 80 88 247 106 229 254 95 102 245 6 229 63 220 173]
> 	Arguments and temporary variables: 
> 		aMessage: 	asByteString
> 		exception: 	MessageNotUnderstood: ByteArray>>asByteString
> 		resumeValue: 	nil
> 	Receiver's instance variables: 
> #[104 60 80 88 247 106 229 254 95 102 245 6 229 63 220 173]
> 
> WebRealtimeHandler>>streamWebSocketOn:for:on:
> 	Receiver: a WebRealtimeHandler
> 	Arguments and temporary variables: 
> 		aStream: 	a WriteStream ''
> 		aRequest: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 ...etc...
> 		aWebSession: 	a WebSession
> 		realtimeConn: 	a WebRealtimeConnection
> 		response: 	a HTTPResponse
> 	Receiver's instance variables: 
> 		session: 	a WebSession
> 		connections: 	an OrderedCollection(a WebRealtimeConnection)
> 
> WebSession>>printHTMLPageOn:for:on:
> 	Receiver: a WebSession
> 	Arguments and temporary variables: 
> 		aStream: 	a WriteStream ''
> 		aRequest: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 ...etc...
> 		aWebSession: 	a WebSession
> 		url: 	'/aidasession/websocket'
> 	Receiver's instance variables: 
> 		ids: 	#(143337102 907561099)
> 		created: 	a SpTimestamp
> 		cookies: 	#(true false)
> 		parent: 	a WebSessionManager
> 		user: 	a WebUser
> 		appsForObjects: 	an IdentityDictionary(a WebAdmin->a Dictionary(#web->a WebAdmin...etc...
> 		queue: 	nil
> 		userValues: 	nil
> 		other: 	a Dictionary(#BrowserSupported->true #RealtimeHandler->a WebRealtimeHand...etc...
> 
> [page
> 		printHTMLPageOn: stream
> 		for: aRequest
> 		on: aWebSession] in AIDASite>>answer:toGetOrPost:on:
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> 		aRequest: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 ...etc...
> 		aWebSession: 	a WebSession
> 		stream: 	a WriteStream ''
> 		page: 	an Array(a WebSession)
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> BlockClosure>>ensure:
> 	Receiver: [page
> 		printHTMLPageOn: stream
> 		for: aRequest
> 		on: aWebSession]
> 	Arguments and temporary variables: 
> 		aBlock: 	[self finalizeExecutingRequest: aRequest]
> 		complete: 	nil
> 		returnValue: 	nil
> 	Receiver's instance variables: 
> 		outerContext: 	AIDASite>>answer:toGetOrPost:on:
> 		startpc: 	318
> 		numArgs: 	0
> 
> AIDASite>>answer:toGetOrPost:on:
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> 		anObject: 	a WebSession
> 		aRequest: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 ...etc...
> 		aWebSession: 	a WebSession
> 		stream: 	a WriteStream ''
> 		response: 	a HTTPResponse
> 		properContent: 	nil
> 		page: 	an Array(a WebSession)
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> AIDASite>>answer:to:on:
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> 		anObject: 	a WebSession
> 		aRequest: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 ...etc...
> 		aWebSession: 	a WebSession
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> [self log: self cr
> 			, (self logStringFor: aRequest) , self cr , '              s'.
> 	self shouldRedirect
> 		ifTrue: [^ self redirectToOtherHost: aRequest].
> 	aRequest isPing
> 		ifTrue: [^ HTTPResponse ok].
> 	session := self sessionManager findOrCreateSessionFor: aRequest.
> 	aRequest session: session.
> 	session isHttpAuthenticationNeeded
> 		ifTrue: [session authenticateFrom: aRequest].
> 	session isHttpAuthenticationNeeded
> 		ifTrue: [^ self unauthorizedResponse].
> 	self log: 'p'.
> 	object := self router resourceFor: aRequest.
> 	self countRequest: aRequest onObject: object.
> 	object isNil
> 		ifTrue: [session removeIfNewGuest.
> 			^ HTTPResponse notFound].
> 	^ self
> 		answer: object
> 		to: aRequest
> 		on: session] in AIDASite>>answerTo:
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> <<error during printing>
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> BlockClosure>>on:do:
> 	Receiver: [self log: self cr
> 			, (self logStringFor: aRequest) , self cr , '              s'.
> 	self...etc...
> 	Arguments and temporary variables: 
> 		exception: 	an ExceptionSet
> 		handlerAction: 	[:exception | 
> self halt.
> 	exception class == HTTPException
> 		if...etc...
> 		handlerActive: 	false
> 	Receiver's instance variables: 
> 		outerContext: 	AIDASite>>answerTo:
> 		startpc: 	174
> 		numArgs: 	0
> 
> AIDASite>>answerTo:
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> <<error during printing>
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> AIDASite>>helpResolve:
> 	Receiver: an AIDASite
> 	Arguments and temporary variables: 
> 		aResolution: 	an URIResolution
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	an OrderedCollection(a SiteIdentifier)
> 		parent: 	a ServerRootComposite
> 		children: 	an OrderedCollection()
> 		name: 	'aidademo'
> 		serving: 	true
> 		style: 	a DefaultWebStyle
> 		settings: 	a Dictionary(#contextProcesses->false #countingPolicy->#all #diagnost...etc...
> 		systemServices: 	a Dictionary(#Admin->a WebAdmin #Cache->a WebCache #Help->a Web...etc...
> 		userServices: 	a Dictionary(#WebDemo->a WebDemo )
> 		timestamps: 	an IdentityDictionary(#Created->3487951614 #LastRequest->3488007153...etc...
> 		counters: 	an IdentityDictionary(#NewVisitors->a WebCounter #NotFound->a WebCoun...etc...
> 		other: 	a Dictionary(#activityAnnouncers->a Dictionary() )
> 
> URIResolution>>visitResource:
> 	Receiver: an URIResolution
> 	Arguments and temporary variables: 
> 		aResource: 	an AIDASite
> 	Receiver's instance variables: 
> 		position: 	1
> 		request: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 h...etc...
> 
> [:each | 
> response := self visitResource: each.
> 	response isNil
> 		ifFalse: [^ response]] in URIResolution>>visitChildrenOf:advancing:
> 	Receiver: an URIResolution
> 	Arguments and temporary variables: 
> 		response: 	an AIDASite
> 		each: 	#(nil)
> 	Receiver's instance variables: 
> 		position: 	1
> 		request: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 h...etc...
> 
> OrderedCollection>>do:
> 	Receiver: an OrderedCollection(an AIDASite)
> 	Arguments and temporary variables: 
> 		aBlock: 	[:each | 
> response := self visitResource: each.
> 	response isNil
> 		ifFal...etc...
> 		index: 	3
> 	Receiver's instance variables: 
> 		array: 	an Array(nil nil an AIDASite nil nil nil nil nil nil nil)
> 		firstIndex: 	3
> 		lastIndex: 	3
> 
> URIResolution>>visitChildrenOf:advancing:
> 	Receiver: an URIResolution
> 	Arguments and temporary variables: 
> 		aResource: 	a ServerRootComposite
> 		aBoolean: 	false
> 		response: 	#(nil)
> 	Receiver's instance variables: 
> 		position: 	1
> 		request: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 h...etc...
> 
> URIResolution>>resolveTransparentComposite:
> 	Receiver: an URIResolution
> 	Arguments and temporary variables: 
> 		aCompositeResource: 	a ServerRootComposite
> 	Receiver's instance variables: 
> 		position: 	1
> 		request: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 h...etc...
> 
> URIResolution>>resolveServerRoot:
> 	Receiver: an URIResolution
> 	Arguments and temporary variables: 
> 		aServerRoot: 	a ServerRootComposite
> 	Receiver's instance variables: 
> 		position: 	1
> 		request: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 h...etc...
> 
> ServerRootComposite>>helpResolve:
> 	Receiver: a ServerRootComposite
> 	Arguments and temporary variables: 
> 		aResolution: 	an URIResolution
> 	Receiver's instance variables: 
> 		enabled: 	true
> 		uriPattern: 	''
> 		parent: 	nil
> 		children: 	an OrderedCollection(an AIDASite)
> 
> URIResolution>>visitResource:
> 	Receiver: an URIResolution
> 	Arguments and temporary variables: 
> 		aResource: 	a ServerRootComposite
> 	Receiver's instance variables: 
> 		position: 	1
> 		request: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 h...etc...
> 
> URIResolution class>>resolveRequest:startingAt:
> 	Receiver: URIResolution
> 	Arguments and temporary variables: 
> 		aRequest: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 ...etc...
> 		aResource: 	a ServerRootComposite
> 	Receiver's instance variables: 
> 		superclass: 	Object
> 		methodDict: 	a MethodDictionary(#advance->(URIResolution>>#advance "a CompiledMe...etc...
> 		format: 	134
> 		instanceVariables: 	#('position' 'request')
> 		organization: 	('accessing' atEnd fullPath position request resourcePath tailPat...etc...
> 		subclasses: 	nil
> 		name: 	#URIResolution
> 		classPool: 	nil
> 		sharedPools: 	nil
> 		environment: 	a SystemDictionary(lots of globals)
> 		category: 	#'Swazoo-HTTP'
> 		traitComposition: 	{}
> 		localSelectors: 	nil
> 
> HTTPServer>>answerTo:
> 	Receiver: a HTTPServer
> 	Arguments and temporary variables: 
> 		aRequest: 	a HTTPRequest GET
> 	 from: 127.0.0.1
> 	 at: 13 July 2011 10:52:33 am
> 	 ...etc...
> 		response: 	nil
> 	Receiver's instance variables: 
> 		ip: 	'localhost'
> 		port: 	8888
> 		connections: 	an OrderedCollection(a HTTPConnection a HTTPConnection a HTTPConne...etc...
> 		sites: 	a ServerRootComposite
> 		socket: 	a SwazooSocket
> 		loop: 	a Process in [self schedule.
> 	beingWaitedOn
> 		ifTrue: [delaySemaphore wai...etc...
> 		isMultiThreading: 	true
> 
> HTTPConnection>>produceResponseFor:
> 	Receiver: a HTTPConnection
> 	Arguments and temporary variables: 
> 		aSwazooTask: 	a SwazooTask
> 	Receiver's instance variables: 
> 		stream: 	a SwazooStream
> 		loop: 	a Process in MorphicUIManager>>openDebuggerOn:context:label:contents:full...etc...
> 		server: 	a HTTPServer
> 		task: 	a SwazooTask
> 		other: 	a Dictionary(#SwazooWebSocket->a SwazooWebSocket #Upgrade->true #Upgrade...etc...
> 
> HTTPConnection>>getAndDispatchMessages
> 	Receiver: a HTTPConnection
> 	Arguments and temporary variables: 
> 
> 	Receiver's instance variables: 
> 		stream: 	a SwazooStream
> 		loop: 	a Process in MorphicUIManager>>openDebuggerOn:context:label:contents:full...etc...
> 		server: 	a HTTPServer
> 		task: 	a SwazooTask
> 		other: 	a Dictionary(#SwazooWebSocket->a SwazooWebSocket #Upgrade->true #Upgrade...etc...
> 
> [[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil] in [[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]] in [[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]]
> 		ifCurtailed: [(Delay forMilliseconds: 50) wait.
> 			self close]] in HTTPConnection>>interact
> 	Receiver: a HTTPConnection
> 	Arguments and temporary variables: 
> 
> 	Receiver's instance variables: 
> 		stream: 	a SwazooStream
> 		loop: 	a Process in MorphicUIManager>>openDebuggerOn:context:label:contents:full...etc...
> 		server: 	a HTTPServer
> 		task: 	a SwazooTask
> 		other: 	a Dictionary(#SwazooWebSocket->a SwazooWebSocket #Upgrade->true #Upgrade...etc...
> 
> BlockClosure>>on:do:
> 	Receiver: [[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 	Arguments and temporary variables: 
> 		exception: 	Error
> 		handlerAction: 	[:ex | nil]
> 		handlerActive: 	true
> 	Receiver's instance variables: 
> 		outerContext: 	[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor ...etc...
> 		startpc: 	97
> 		numArgs: 	0
> 
> [[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]] in [[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]]
> 		ifCurtailed: [(Delay forMilliseconds: 50) wait.
> 			self close]] in HTTPConnection>>interact
> 	Receiver: a HTTPConnection
> 	Arguments and temporary variables: 
> 
> 	Receiver's instance variables: 
> 		stream: 	a SwazooStream
> 		loop: 	a Process in MorphicUIManager>>openDebuggerOn:context:label:contents:full...etc...
> 		server: 	a HTTPServer
> 		task: 	a SwazooTask
> 		other: 	a Dictionary(#SwazooWebSocket->a SwazooWebSocket #Upgrade->true #Upgrade...etc...
> 
> BlockClosure>>ifCurtailed:
> 	Receiver: [[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error...etc...
> 	Arguments and temporary variables: 
> 		aBlock: 	[(Delay forMilliseconds: 50) wait.
> 	self close]
> 		complete: 	nil
> 		result: 	nil
> 	Receiver's instance variables: 
> 		outerContext: 	[[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor...etc...
> 		startpc: 	93
> 		numArgs: 	0
> 
> [[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]]
> 		ifCurtailed: [(Delay forMilliseconds: 50) wait.
> 			self close]] in HTTPConnection>>interact
> 	Receiver: a HTTPConnection
> 	Arguments and temporary variables: 
> 
> 	Receiver's instance variables: 
> 		stream: 	a SwazooStream
> 		loop: 	a Process in MorphicUIManager>>openDebuggerOn:context:label:contents:full...etc...
> 		server: 	a HTTPServer
> 		task: 	a SwazooTask
> 		other: 	a Dictionary(#SwazooWebSocket->a SwazooWebSocket #Upgrade->true #Upgrade...etc...
> 
> [self value.
> 	Processor terminateActive] in BlockClosure>>newProcess
> 	Receiver: [[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Erro...etc...
> 	Arguments and temporary variables: 
> 
> 	Receiver's instance variables: 
> 		outerContext: 	HTTPConnection>>interact
> 		startpc: 	89
> 		numArgs: 	0
> 
> 
> --- The full stack ---
> AIDASite(Object)>>halt
> [:exception | 
> self halt.
> 	exception class == HTTPException
> 		ifTrue: [^ exception response].
> 	exception class == SpSocketError
> 		ifTrue: [self reportSocketError: exception request: aRequest]
> 		ifFalse: [self reportException: exception.
> 			exception defaultAction].
> 	errorResponse := self httpResponseOnException: exception.
> 	HTTPException raiseResponse: errorResponse.
> 	^ errorResponse] in AIDASite>>answerTo:
> BlockClosure>>cull:
> [(self tempAt: 2)
> 		cull: exception] in MethodContext(ContextPart)>>handleSignal:
> BlockClosure>>ensure:
> MethodContext(ContextPart)>>handleSignal:
> MessageNotUnderstood(Exception)>>signal
> ByteArray(Object)>>doesNotUnderstand: #asByteString
> WebRealtimeHandler>>streamWebSocketOn:for:on:
> WebSession>>printHTMLPageOn:for:on:
> [page
> 		printHTMLPageOn: stream
> 		for: aRequest
> 		on: aWebSession] in AIDASite>>answer:toGetOrPost:on:
> BlockClosure>>ensure:
> AIDASite>>answer:toGetOrPost:on:
> AIDASite>>answer:to:on:
> [self log: self cr
> 			, (self logStringFor: aRequest) , self cr , '              s'.
> 	self shouldRedirect
> 		ifTrue: [^ self redirectToOtherHost: aRequest].
> 	aRequest isPing
> 		ifTrue: [^ HTTPResponse ok].
> 	session := self sessionManager findOrCreateSessionFor: aRequest.
> 	aRequest session: session.
> 	session isHttpAuthenticationNeeded
> 		ifTrue: [session authenticateFrom: aRequest].
> 	session isHttpAuthenticationNeeded
> 		ifTrue: [^ self unauthorizedResponse].
> 	self log: 'p'.
> 	object := self router resourceFor: aRequest.
> 	self countRequest: aRequest onObject: object.
> 	object isNil
> 		ifTrue: [session removeIfNewGuest.
> 			^ HTTPResponse notFound].
> 	^ self
> 		answer: object
> 		to: aRequest
> 		on: session] in AIDASite>>answerTo:
> BlockClosure>>on:do:
> AIDASite>>answerTo:
> AIDASite>>helpResolve:
> URIResolution>>visitResource:
> [:each | 
> response := self visitResource: each.
> 	response isNil
> 		ifFalse: [^ response]] in URIResolution>>visitChildrenOf:advancing:
> OrderedCollection>>do:
> URIResolution>>visitChildrenOf:advancing:
> URIResolution>>resolveTransparentComposite:
> URIResolution>>resolveServerRoot:
> ServerRootComposite>>helpResolve:
> URIResolution>>visitResource:
> URIResolution class>>resolveRequest:startingAt:
> HTTPServer>>answerTo:
> HTTPConnection>>produceResponseFor:
> HTTPConnection>>getAndDispatchMessages
> [[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil] in [[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]] in [[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]]
> 		ifCurtailed: [(Delay forMilliseconds: 50) wait.
> 			self close]] in HTTPConnection>>interact
> BlockClosure>>on:do:
> [[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]] in [[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]]
> 		ifCurtailed: [(Delay forMilliseconds: 50) wait.
> 			self close]] in HTTPConnection>>interact
> BlockClosure>>ifCurtailed:
> [[[[true]
> 		whileTrue: [self getAndDispatchMessages.
> 			Processor yield].
> 	nil]
> 		on: Error
> 		do: [:ex | nil]]
> 		ifCurtailed: [(Delay forMilliseconds: 50) wait.
> 			self close]] in HTTPConnection>>interact
> [self value.
> 	Processor terminateActive] in BlockClosure>>newProcess
> 
> 
> 

-- 
Janko Mivšek
Aida/Web
Smalltalk Web Application Server
http://www.aidaweb.si



More information about the Squeak-dev mailing list