[etoys-dev] Etoys: ScratchConnect-Richo.2.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Mar 12 00:51:05 EDT 2012

Ricardo Moran uploaded a new version of ScratchConnect to project Etoys:

==================== Summary ====================

Name: ScratchConnect-Richo.2
Author: Richo
Time: 12 March 2012, 1:51:13 am
UUID: d8023660-e3f6-2e4c-8229-6a4ff1e157fe
Ancestors: ScratchConnect-Richo.1

Fixed a couple of potential issues detected after a more detailed code review:
* Disconnect the socket when deleting the morph.
* Changed a couple of sends in Player from "costume" to "costume renderedMorph", otherwise they would fail if the ScratchClientMorph is rotated.
* Changed #stepTime to only return 0 if the morph is connected, otherwise send "super stepTime".
* Changed to avoid connecting if another instance is already connected to the same host and port.

=============== Diff against ScratchConnect-Richo.1 ===============

Item was changed:
  ----- Method: Player>>broadcast: (in category '*scratchconnect') -----
  broadcast: aString 
+ 	self costume renderedMorph broadcast: aString!
- 	self costume broadcast: aString!

Item was changed:
  ----- Method: Player>>receiveMessages (in category '*scratchconnect') -----
+ 	self costume renderedMorph receiveMessages!
- 	self costume receiveMessages!

Item was changed:
  ----- Method: Player>>sendSensorUpdateNamed:value: (in category '*scratchconnect') -----
  sendSensorUpdateNamed: aName value: aValue 
+ 	self costume renderedMorph sendSensorUpdateNamed: aName value: aValue!
- 	self costume sendSensorUpdateNamed: aName value: aValue!

Item was changed:
  ----- Method: Player>>sendValues (in category '*scratchconnect') -----
  	| updateParameters |
  	updateParameters := Dictionary new.
  	self slotNames
  		do: [:slt | updateParameters
  				at: slt
  				put: (self
  						perform: (Utilities getterSelectorFor: slt))].
+ 	self costume renderedMorph sendSensorUpdate: updateParameters!
- 	self costume sendSensorUpdate: updateParameters!

Item was changed:
  ----- Method: Player>>sensorUpdate: (in category '*scratchconnect') -----
  sensorUpdate: aString 
+ 	self costume renderedMorph sendScratchCommand: 'sensor-update'
- 	self costume sendScratchCommand: 'sensor-update'
  			, (aString convertToEncoding: 'UTF8')!

Item was added:
+ ----- Method: ScratchClientMorph>>delete (in category 'initialization') -----
+ delete
+ 	super delete.
+ 	self closeConnectionToScratch!

Item was added:
+ ----- Method: ScratchClientMorph>>isOtherInstanceConnectedTo:port: (in category 'private') -----
+ isOtherInstanceConnectedTo: host port: port 
+ 	self class 	allInstancesDo: [:each |
+ 		(each isConnectedToScratch
+ 		and: [each scratchHost = host
+ 		and: [each scratchPort = port]])
+ 			ifTrue: [^ true]].
+ 	^ false!

Item was changed:
  ----- Method: ScratchClientMorph>>openConnectionToScratch (in category 'private') -----
  	self isConnectedToScratch
  		ifTrue: [^ self].
  	(self scratchHost isNil
  			or: [self scratchPort isNil])
  		ifTrue: [^ self].
+ 	(self isOtherInstanceConnectedTo: self scratchHost port: self scratchPort)
+ 		ifTrue: [self error].
  		ifNotNil: [[scratchSocket close]
  				ensure: [scratchSocket := nil]].
  	scratchSocket := SocketStream openConnectionToHostNamed: self scratchHost port: self scratchPort.
  	scratchSocket binary.
  	scratchSocket buffered: false.
  	self updateIndicator.
  	self isConnectedToScratch
  		ifTrue: [self addLog: 'open connection: ' , self scratchHost , ':' , self scratchPort printString.
  			self sayBalloon: 'open connection: ' , self scratchHost , ':' , self scratchPort printString.
  			self isVerbose
  				ifTrue: [self beep: 'meow']]!

Item was changed:
  ----- Method: ScratchClientMorph>>step (in category 'stepping and presenter') -----
  	self isConnectedToScratch
  		ifTrue: [self receiveMessages].
+ 	self updateIndicator!
- 	self updateIndicator.
- 	super step!

Item was changed:
+ ----- Method: ScratchClientMorph>>stepTime (in category 'stepping and presenter') -----
- ----- Method: ScratchClientMorph>>stepTime (in category 'testing') -----
+ 	^ self isConnectedToScratch
+ 		ifTrue: [0]
+ 		ifFalse: [super stepTime]!
- 	^ 0!

More information about the etoys-dev mailing list