"{ Package: 'stx:goodies/xtreams/terminals' }"
"{ NameSpace: Xtreams }"
WriteStream subclass:#SharedQueueWriteStream
instanceVariableNames:'contentsSpecies'
classVariableNames:''
poolDictionaries:''
category:'Xtreams-Terminals'
!
SharedQueueWriteStream comment:'Write stream on a SharedQueue. Primarily used for data transfer between processes.
{{{
queue := SharedQueue new.
in := queue reading.
out := queue writing.
received := Array new writing.
done := Semaphore new.
consumer :=
[ | size |
[ (size := in get) isZero
] whileFalse: [ | word |
word := ByteString new: size.
in read: size into: word.
received put: word ].
done signal.
] fork.
#(one two three four) do: [ :word | out put: word size; write: word ].
out put: 0.
done wait.
received conclusion
}}}
Instance Variables
contentsSpecies <Class> species for collections of elements of this stream
'
!
!SharedQueueWriteStream methodsFor:'accessing'!
write: anInteger from: aSequenceableCollection at: startIndex
startIndex to: startIndex + anInteger - 1 do: [:index | destination nextPut: (aSequenceableCollection at: index)].
^anInteger
! !
!SharedQueueWriteStream methodsFor:'initialize-release'!
close
!
contentsSpecies
^contentsSpecies
!
contentsSpecies: aClass
contentsSpecies := aClass
!
flush
!
on: aDestination
super on: aDestination.
contentsSpecies := Array
! !
!SharedQueueWriteStream class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
! !