[Cuis] [aida] [ANN] A first port to Cuis of Sport and Swazoo
Janko Mivšek
janko.mivsek at eranova.si
Sun Jan 27 13:18:38 CST 2013
Hi Hannes,
Dne 21. 01. 2013 16:12, piše H. Hirzel:
> Janko, a question
>
> On 1/21/13, Janko Mivšek <janko.mivsek at eranova.si> wrote:
>> Germán,
>>
>> I put your process changes on VW Swazoo
>
>
> where is it?
>
> http://www.swazoo.org/download.html
> does not have an entry for VW Swazoo alone.
I'm just upgrading download/install instructions. Thanks for notifying
on really ancient Swazoo docs :(
Best regards
Janko
> --Hannes
>
>> and here is the result, which is
>> probably least common denominator to all dialects:
>>
>>
>> HTTPServer>>start
>> self loop isNil ifTrue:
>> [self socket:
>> (SwazooSocket serverOnIP: self ipCorrected port: self port).
>> self socket listenFor: 128.
>> self loop:
>> [ [self acceptConnection] repeat]
>> newProcess.
>> self loop
>> priority: Processor userBackgroundPriority;
>> resume
>> ]
>>
>>
>> Additionally:
>>
>> HTTPConnection>>interact
>>
>> ...
>>
>> self server isMultiThreading
>> ifTrue:
>> [self loop: interactionBlock newProcess.
>> self loop
>> priority: Processor userBackgroundPriority;
>> resume]
>> ifFalse: [interactionBlock value].
>> ^self
>>
>>
>> ServerTest>>setUp doesn't seem to have the process problem (process is
>> not stored in any variable, so I propose to leave this method unchanged.
>>
>> Best regards
>> Janko
>>
>>
>> Dne 20. 01. 2013 16:59, piše Germán Arduino:
>>> Hi:
>>>
>>> The first versions of Sport and Swazoo working in Cuis 4.1 with all
>>> tests green are ready to install.
>>>
>>> The changes I did in Swazoo are:
>>>
>>>
>>> - Avoid Unicode support that don't exist in Cuis
>>>
>>>
>>> WebSocketConnection:
>>>
>>> fromUtf8: aString
>>> "Squeak specific"
>>>
>>> "gsa 14/01/2013 for Cuis port"
>>> "^[aString convertFromEncoding: #utf8] on: Error do: [:ex | aString ]
>>> ^ aString
>>>
>>>
>>> toUtf8: aString
>>> "Squeak specific"
>>> "
>>> | converter in out |
>>> converter := UTF8TextConverter new.
>>> in := aString readStream.
>>> out := WriteStream on: ''.
>>> [in atEnd] whileFalse:
>>> [converter nextPut: in next toStream: out].
>>> ^out contents
>>> "
>>> ^ aString.
>>>
>>>
>>> SwazooBuffer >>closeChunkTo: aSocket
>>>
>>> " gsa 18/01/2013 used String instead ByteString for Cuis"
>>> "chunk := ByteString new: 5."
>>>
>>>
>>> - Avoid #fork and #forkAt: calling #newProcess instead:
>>>
>>> HTTPServer >>start
>>>
>>> start
>>> | swazooProcess |
>>> self loop isNil ifTrue: [
>>> self socket:
>>> (SwazooSocket
>>> serverOnIP: self ipCorrected
>>> port: self port).
>>> self socket listenFor: 128.
>>> self loop: (swazooProcess _ [ [ self acceptConnection ] repeat ]
>>> newProcess).
>>> swazooProcess name: 'Swazoo ' , DateAndTime now asString.
>>> swazooProcess priority: Processor userBackgroundPriority.
>>> swazooProcess resume ].
>>>
>>> instead of the original code:
>>>
>>> start
>>> self loop isNil ifTrue: [
>>> self socket:
>>> (SwazooSocket
>>> serverOnIP: self ipCorrected
>>> port: self port).
>>> self socket listenFor: 128.
>>> self loop: ([ [ self acceptConnection ] repeat ] forkAt: Processor
>>> userBackgroundPriority) ].
>>>
>>>
>>>
>>> HTTPServer >>setUp
>>>
>>> setUp
>>> | socket swazooProcess |
>>> (Delay forMilliseconds: 100) wait.
>>> server _ HTTPServer new.
>>> swazooProcess _ [
>>> server
>>> ip: 'localhost';
>>> port: 8123.
>>> server start ] newProcess.
>>> swazooProcess name: 'Swazoo HTTPServer Test'.
>>> swazooProcess resume.
>>> (Delay forMilliseconds: 100) wait.
>>> " stream := (SocketAccessor newTCPclientToHost: 'localhost' port: 8123)
>>> readAppendStream"
>>> socket _ SpSocket
>>> connectToServerOnHost: 'localhost'
>>> port: 8123.
>>> stream _ SwazooStream socket: socket.
>>>
>>> instead of the original code:
>>>
>>> setUp
>>> | socket |
>>> (Delay forMilliseconds: 100) wait.
>>> server := HTTPServer new.
>>> [server ip: 'localhost'; port: 8123.
>>> server start]
>>> fork.
>>> (Delay forMilliseconds: 100) wait.
>>> " stream := (SocketAccessor newTCPclientToHost: 'localhost' port: 8123)
>>> readAppendStream"
>>> socket := SpSocket connectToServerOnHost: 'localhost' port: 8123.
>>> stream := SwazooStream socket: socket
>>>
>>>
>>> Other considerations:
>>>
>>> SpFilename >>underlyingFilename (This method do not exist, but do not
>>> exist neither in the original one click aida/pharo image)
>>>
>>> Security class don't exist neither in the pharo one click image.
>>>
>>> #trimSeparators, is named in SwazooMD5 but do not seems implemented.
>>>
>>>
>>>
>>>
>>> To install Sport and Swazoo, follow the next steps:
>>>
>>> 1. Take a new Cuis 4.1 image.
>>>
>>> 2. From GitHub / garduino clone in your computer the repos
>>> Cuis-Cryptography
>>> Cuis-CompatibilityWithOtherSmalltalks
>>> Cuis-Pharo14CompatibilityLayer
>>> Cuis-Sport
>>> Cuis-Swazoo
>>>
>>> 3. In a workspace run the next script:
>>>
>>> | slash repo |
>>> slash _ FileDirectory slash.
>>> repo := '/Users/Shared/YOURCODEREPOSITORYPATH/'.
>>> {
>>> repo, slash, 'Cuis-Cryptography', slash, 'Cuis-System-Hashing.pck.st' .
>>> repo, slash, 'Cuis-CompatibilityWithOtherSmalltalks', slash,
>>> 'Cuis-CompatibilityWithOtherSmalltalks.pck.st' .
>>> repo, slash, 'Cuis-Pharo14CompatibilityLayer', slash,
>>> 'Cuis-Network-Protocols.pck.st' .
>>> repo, slash, 'Cuis-Pharo14CompatibilityLayer', slash,
>>> 'Cuis-Network-Url.pck.st' .
>>> repo, slash, 'Cuis-Sport', slash, 'Sport.pck.st' .
>>> repo, slash, 'Cuis-Swazoo', slash, 'Swazoo.pck.st' .
>>> }
>>> do:
>>> [ :fileName | CodePackageFile installPackageStream:
>>> (FileStream concreteStream readOnlyFileNamed: fileName)
>>> ].
>>>
>>>
>>> 4. You will notice some warnings in the Transcript regarding some
>>> Network-* classes, it is because I'm installing here only the minimum
>>> code that I need for Swazoo and I must still end to polish the delta
>>> between the Network protocol in Cuis vs Pharo/Squeak
>>>
>>> 5. I did also an early port of TimeStamp, not existing in Cuis, and I
>>> have still 1 failing test.
>>>
>>>
>>> But Swazoo seems to work ok, all the test pass and the tests I did in
>>> the workspace seems to work, but as I'm not in expert in Swazoo, I
>>> will be more than happy of receive corrections, suggestion, etc, to
>>> leave the port in a stable state.
>>
>> --
>> Janko Mivšek
>> Aida/Web
>> Smalltalk Web Application Server
>> http://www.aidaweb.si
>>
>> _______________________________________________
>> Cuis mailing list
>> Cuis at jvuletich.org
>> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org
>>
> _______________________________________________
> Aida mailing list
> Aida at aidaweb.si
> http://lists.aidaweb.si/mailman/listinfo/aida
>
--
Janko Mivšek
Svetovalec za informatiko
Eranova d.o.o.
Ljubljana, Slovenija
www.eranova.si
tel: 01 514 22 55
faks: 01 514 22 56
gsm: 031 674 565
More information about the Cuis
mailing list