diff --git a/akka-actor/src/main/scala/akka/util/ByteString.scala b/akka-actor/src/main/scala/akka/util/ByteString.scala index 5ce80b0549..d75fb01374 100644 --- a/akka-actor/src/main/scala/akka/util/ByteString.scala +++ b/akka-actor/src/main/scala/akka/util/ByteString.scala @@ -424,6 +424,15 @@ sealed abstract class CompactByteString extends ContByteString with Serializable object ByteStringBuilder { def apply(initialSize: Int = 0): ByteStringBuilder = new ByteStringBuilder(initialSize) + + /** + * An OutputStream that directly wraps a ByteStringBuilder. + */ + class OutputStreamWrapper(val builder: ByteStringBuilder) extends java.io.OutputStream { + def write(b: Int) = builder += b.toByte + + override def write(b: Array[Byte], off: Int, len: Int) { builder.putBytes(b, off, len) } + } } /** @@ -526,4 +535,9 @@ final class ByteStringBuilder extends Builder[Byte, ByteString] { ByteStrings(bytestrings, _length) } + /** + * Directly wraps this ByteStringBuilder in an OutputStream. Write + * operations on the stream are forwarded to the builder. + */ + def asOutputStream = new ByteStringBuilder.OutputStreamWrapper(this) }