BTW, would this snippet be useful as a basic Socket smoke test ? Or is that
already covered somewhere ?
| input output listener process sync |
sync := Semaphore new.
listener := Socket newTCP.
listener listenOn: 9999 backlogSize: 10.
process := [
[ input := listener waitForAcceptFor: 10.
sync signal
] ensure: [ listener close ]
] fork.
output := Socket newTCP.
output connectTo: #[127 0 0 1] port: 9999.
sync wait.
[ #( 64 1024 2048 4096 8192 ) do: [:dataSize || data |
data := ByteArray new: dataSize.
1 to: data size do: [:i | data at: i put: (i - 1) \\ 256].
1 to: 10 do: [:each | output sendData: data].
1 to: 10 do: [ :each || result index |
index := 1.
result := ByteArray new: dataSize.
[ index := index + (input receiveDataInto: result
startingAt: index).
index > dataSize ] whileFalse.
result = data ifFalse: [ result halt]]]
] ensure: [ output close. input close ]