Remove nullStream, add stdin, stdout & stderr
This commit is contained in:
parent
f3773f17a5
commit
6835823860
2 changed files with 91 additions and 6 deletions
|
@ -21,7 +21,6 @@ package de.staropensource.engine.base.implementable.stream
|
||||||
|
|
||||||
import de.staropensource.engine.base.annotation.NonKotlinContact
|
import de.staropensource.engine.base.annotation.NonKotlinContact
|
||||||
import de.staropensource.engine.base.exception.io.IOAccessException
|
import de.staropensource.engine.base.exception.io.IOAccessException
|
||||||
import de.staropensource.engine.base.implementation.stream.NullStream
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
@ -40,11 +39,96 @@ abstract class Stream(val streamMode: StreamMode) : AutoCloseable {
|
||||||
*/
|
*/
|
||||||
companion object {
|
companion object {
|
||||||
/**
|
/**
|
||||||
* Returns a [Stream] which does nothing.
|
* Contains the standard input as a [Stream].
|
||||||
|
* It cannot be closed.
|
||||||
*
|
*
|
||||||
|
* @see <a href="https://man.archlinux.org/man/stdin.3">stdin(3)</a>
|
||||||
* @since v1-alpha10
|
* @since v1-alpha10
|
||||||
*/
|
*/
|
||||||
val nullStream: Stream = NullStream.instance
|
val standardInput: ReadStream = object : ReadStream() {
|
||||||
|
/**
|
||||||
|
* Contains the Java [InputStream]
|
||||||
|
* provided by [System.in].
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
val stream: InputStream = System.`in`
|
||||||
|
|
||||||
|
// -----> Closure
|
||||||
|
override fun close() = Unit
|
||||||
|
override fun closeStream() = Unit
|
||||||
|
|
||||||
|
|
||||||
|
// -----> Reading
|
||||||
|
override fun remaining(): Boolean? = null
|
||||||
|
override fun available(): UInt = stream.available().toUInt()
|
||||||
|
override fun readNextByte(): Byte? = stream.read().toByte()
|
||||||
|
override fun readNBytes(n: UInt): ByteArray = stream.readNBytes(n.toInt())
|
||||||
|
override fun readRemainingBytes(): ByteArray = stream.readAllBytes()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the standard output as a [Stream].
|
||||||
|
* It cannot be closed.
|
||||||
|
*
|
||||||
|
* @see <a href="https://man.archlinux.org/man/stdout.3">stdout(3)</a>
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
val standardOutput: WriteStream = object : WriteStream() {
|
||||||
|
/**
|
||||||
|
* Contains the Java [OutputStream]
|
||||||
|
* provided by [System.out].
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
val stream: OutputStream = System.out
|
||||||
|
|
||||||
|
// -----> Closure
|
||||||
|
override fun close() = Unit
|
||||||
|
override fun closeStream() = Unit
|
||||||
|
|
||||||
|
|
||||||
|
// -----> Writing
|
||||||
|
override fun writeByte(byte: Byte): Stream {
|
||||||
|
stream.write(byte.toInt())
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
override fun writeBytes(bytes: ByteArray): Stream {
|
||||||
|
stream.write(bytes)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the standard error as a [Stream].
|
||||||
|
*
|
||||||
|
* @see <a href="https://man.archlinux.org/man/stderr.3">stderr(3)</a>
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
val standardError: WriteStream = object : WriteStream() {
|
||||||
|
/**
|
||||||
|
* Contains the Java [OutputStream]
|
||||||
|
* provided by [System.err].
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
val stream: OutputStream = System.err
|
||||||
|
|
||||||
|
// -----> Closure
|
||||||
|
override fun close() = Unit
|
||||||
|
override fun closeStream() = Unit
|
||||||
|
|
||||||
|
|
||||||
|
// -----> Writing
|
||||||
|
override fun writeByte(byte: Byte): Stream {
|
||||||
|
stream.write(byte.toInt())
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
override fun writeBytes(bytes: ByteArray): Stream {
|
||||||
|
stream.write(bytes)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +142,7 @@ abstract class Stream(val streamMode: StreamMode) : AutoCloseable {
|
||||||
private set
|
private set
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains the [java.io.InputStream]
|
* Contains the Java [InputStream]
|
||||||
* for this [Stream] instance.
|
* for this [Stream] instance.
|
||||||
*
|
*
|
||||||
* @since v1-alpha10
|
* @since v1-alpha10
|
||||||
|
@ -66,7 +150,7 @@ abstract class Stream(val streamMode: StreamMode) : AutoCloseable {
|
||||||
private var inputStream: InputFileStream? = null
|
private var inputStream: InputFileStream? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains the [java.io.OutputStream]
|
* Contains the Java [OutputStream]
|
||||||
* for this [Stream] instance.
|
* for this [Stream] instance.
|
||||||
*
|
*
|
||||||
* @since v1-alpha10
|
* @since v1-alpha10
|
||||||
|
|
|
@ -22,7 +22,8 @@ package de.staropensource.engine.base.implementation.stream
|
||||||
import de.staropensource.engine.base.implementable.stream.Stream
|
import de.staropensource.engine.base.implementable.stream.Stream
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A [Stream] which does nothing.
|
* A [Stream] which does nothing
|
||||||
|
* and cannot even be closed.
|
||||||
*
|
*
|
||||||
* @since v1-alpha10
|
* @since v1-alpha10
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue