Stream subclass:#SplittingWriteStream
instanceVariableNames:'outStream1 outStream2'
classVariableNames:''
poolDictionaries:''
category:'Streams-Misc'
!
!SplittingWriteStream class methodsFor:'documentation'!
documentation
"
A stream duplicator - everything written onto a splittingWriteStream
is written to two real streams.
Useful, if you have to send something to two files/destinations
simultaneously, and do not want to (or cannot) buffer it.
Especially useful, to generate a checksum,
while sending something to a file
(if one of the output streams is a checksummer).
[author:]
Claus Gittinger (cg@exept)
[see also:]
WriteStream
[instance variables:]
outStream1 <Stream> actual output streams
outStream2 <Stream>
[class variables:]
"
!
examples
"
examples to be added.
[exBegin]
|s1 s2 splitter|
s1 := '/tmp/foo1' asFilename writeStream.
s2 := '/tmp/foo2' asFilename writeStream.
splitter := SplittingWriteStream on:s1 and:s2.
splitter nextPutAll:'hello world'.
splitter close.
[exEnd]
"
! !
!SplittingWriteStream class methodsFor:'instance creation'!
on:stream1 and:stream2
^ self basicNew setOutStream1:stream1 outStream2:stream2
! !
!SplittingWriteStream methodsFor:'private access'!
setOutStream1:stream1 outStream2:stream2
outStream1 := stream1.
outStream2 := stream2.
! !
!SplittingWriteStream methodsFor:'writing'!
close
outStream1 close.
outStream2 close.
!
endEntry
outStream1 endEntry.
outStream2 endEntry.
!
flush
outStream1 flush.
outStream2 flush.
!
nextPut:something
outStream1 nextPut:something.
outStream2 nextPut:something.
!
nextPutAll:something
outStream1 nextPutAll:something.
outStream2 nextPutAll:something.
! !
!SplittingWriteStream class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libbasic2/SplittingWriteStream.st,v 1.1 1999-10-13 19:49:21 cg Exp $'
! !