"{ Encoding: utf8 }" !
"{ Package: 'stx:goodies/xtreams/terminals' }" !
!UndefinedObject methodsFor:'converting'!
writing
^Xtreams::NullWriteStream new
! !
!PipeStream methodsFor:'converting'!
reading
^Xtreams::ExternalReadStream on: self
! !
!PipeStream methodsFor:'converting'!
writing
^Xtreams::ExternalWriteStream on: self
! !
!PipeStream methodsFor:'testing'!
isActive
^self isOpen
! !
!Block methodsFor:'xtreams'!
reading
self numArgs = 0 ifTrue: [^Xtreams::BlockClosureReadStream on: self].
self numArgs = 1 ifTrue: [^Xtreams::BlockClosureGenerateStream on: self].
self error: 'More arguments than we can poke a stick at!!'
! !
!Block methodsFor:'xtreams'!
writing
self numArgs = 1 ifTrue: [^Xtreams::BlockClosureWriteStream on: self].
self error: 'Must be a single argument block.'
! !
!Socket methodsFor:'converting'!
accepting
"Return a read stream that produces new sockets from incoming connections."
"^ ReadStream"
"Listen for connections and close those connections immediately.
| socket |
socket := SocketAccessor newTCP.
socket listenFor: 1.
[socket acceping do: [:client | client close]]
ensure: [socket close]
"
^[self accept] reading
closeBlock: [self close];
yourself
! !
!Socket methodsFor:'converting'!
reading
^Xtreams::ExternalReadStream on: self
! !
!Socket methodsFor:'converting'!
writing
^Xtreams::ExternalWriteStream on: self
! !
!SharedQueue methodsFor:'converting'!
reading
^Xtreams::SharedQueueReadStream on: self
! !
!SharedQueue methodsFor:'converting'!
writing
^Xtreams::SharedQueueWriteStream on: self
! !
!Filename methodsFor:'converting'!
appending
^(OperatingSystem open: self osNameForAccess attributes: #(O_APPEND O_CREAT) mode: nil) writing
position: self fileSize;
isPositionable: false;
yourself
! !
!Filename methodsFor:'converting'!
reading
self isDirectory ifFalse: [^(OperatingSystem open: self osNameForAccess attributes: #(O_RDONLY) mode: nil) reading].
"Return the directory contents as a stream of filenames"
^([self directoryContents]
on: Error
do: [:ex | ex return: #()])
reading collecting: [:each | self construct: each asFilename]
! !
!Filename methodsFor:'converting'!
writing
^(OperatingSystem open: self osNameForAccess attributes: #(O_WRONLY | O_CREAT) mode: nil) writing
! !
!SequenceableCollection methodsFor:'converting'!
reading
^Xtreams::SequenceableCollectionReadStream on: self
! !
!SequenceableCollection methodsFor:'converting'!
writing
^Xtreams::SequenceableCollectionWriteStream on: self
! !
!UnixOperatingSystem::FileDescriptorHandle methodsFor:'xtreams'!
writing
^Xtreams::FileWriteStream on: self
! !
!UnixOperatingSystem::FileDescriptorHandle methodsFor:'xtreams'!
reading
^Xtreams::FileReadStream on: self
! !
!Collection methodsFor:'converting'!
writing
^Xtreams::CollectionWriteStream on: self
! !
!Xtreams::Buffer methodsFor:'converting'!
reading
^BufferReadStream on: self
! !
!Xtreams::Buffer methodsFor:'converting'!
writing
^BufferWriteStream on: self
! !
!Xtreams::WriteStream methodsFor:'transforming'!
buffering: bufferSize
"Delays committing its content to its underlying stream until it has reached a certain size ,#flush is sent, or the stream is closed."
" bufferSize <Integer> The size of the buffer to start with.
^<PositionWriteStream>"
"
(ByteArray new writing buffering: 5)
write: (ByteArray withAll: (1 to: 11));
conclusion
"
^BufferedWriteStream on: self bufferSize: bufferSize
! !
!Random methodsFor:'converting'!
reading
^[self next] reading
contentsSpecies: self contentsSpecies;
yourself
! !