akka.util
Class ByteString

java.lang.Object
  extended by akka.util.ByteString
All Implemented Interfaces:
scala.collection.generic.FilterMonadic<java.lang.Object,ByteString>, scala.collection.generic.GenericTraversableTemplate<java.lang.Object,scala.collection.immutable.IndexedSeq>, scala.collection.generic.HasNewBuilder<java.lang.Object,ByteString>, scala.collection.GenIterable<java.lang.Object>, scala.collection.GenIterableLike<java.lang.Object,ByteString>, scala.collection.GenSeq<java.lang.Object>, scala.collection.GenSeqLike<java.lang.Object,ByteString>, scala.collection.GenTraversable<java.lang.Object>, scala.collection.GenTraversableLike<java.lang.Object,ByteString>, scala.collection.GenTraversableOnce<java.lang.Object>, scala.collection.IndexedSeq<java.lang.Object>, scala.collection.IndexedSeqLike<java.lang.Object,ByteString>, scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>, scala.collection.Iterable<java.lang.Object>, scala.collection.IterableLike<java.lang.Object,ByteString>, scala.collection.Parallelizable<java.lang.Object,scala.collection.parallel.ParSeq<java.lang.Object>>, scala.collection.Seq<java.lang.Object>, scala.collection.SeqLike<java.lang.Object,ByteString>, scala.collection.Traversable<java.lang.Object>, scala.collection.TraversableLike<java.lang.Object,ByteString>, scala.collection.TraversableOnce<java.lang.Object>, scala.Equals, scala.Function1<java.lang.Object,java.lang.Object>, scala.Immutable, scala.PartialFunction<java.lang.Object,java.lang.Object>
Direct Known Subclasses:
ByteString.ByteString1, ByteString.ByteStrings, CompactByteString

public abstract class ByteString
extends java.lang.Object
implements scala.collection.immutable.IndexedSeq<java.lang.Object>, scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>

A rope-like immutable data structure containing bytes. The goal of this structure is to reduce copying of arrays when concatenating and slicing sequences of bytes, and also providing a thread safe way of working with bytes.

TODO: Add performance characteristics


Nested Class Summary
static class ByteString.ByteString1
          An unfragmented ByteString.
static class ByteString.ByteString1C
          A compact (unsliced) and unfragmented ByteString, implementation of ByteString1C.
static class ByteString.ByteStrings
          A ByteString with 2 or more fragments.
 
Nested classes/interfaces inherited from interface scala.collection.immutable.IndexedSeq
scala.collection.immutable.IndexedSeq.Impl<A>
 
Nested classes/interfaces inherited from interface scala.PartialFunction
scala.PartialFunction.AndThen<A,B,C>, scala.PartialFunction.Lifted<A,B>, scala.PartialFunction.OrElse<A,B>, scala.PartialFunction.Unlifted<A,B>
 
Nested classes/interfaces inherited from interface scala.collection.IndexedSeqLike
scala.collection.IndexedSeqLike.Elements
 
Nested classes/interfaces inherited from interface scala.collection.SeqLike
scala.collection.SeqLike.CombinationsItr, scala.collection.SeqLike.PermutationsItr
 
Nested classes/interfaces inherited from interface scala.collection.TraversableLike
scala.collection.TraversableLike.WithFilter
 
Nested classes/interfaces inherited from interface scala.collection.TraversableOnce
scala.collection.TraversableOnce.BufferedCanBuildFrom<A,Coll extends scala.collection.TraversableOnce<java.lang.Object>>, scala.collection.TraversableOnce.FlattenOps<A>, scala.collection.TraversableOnce.ForceImplicitAmbiguity, scala.collection.TraversableOnce.MonadOps<A>, scala.collection.TraversableOnce.OnceCanBuildFrom<A>
 
Constructor Summary
ByteString()
           
 
Method Summary
abstract  byte apply(int idx)
           
abstract  java.nio.ByteBuffer asByteBuffer()
          Returns a read-only ByteBuffer that directly wraps this ByteString if it is not fragmented.
abstract  scala.collection.immutable.Iterable<java.nio.ByteBuffer> asByteBuffers()
          Scala API: Returns an immutable Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments.
static scala.collection.generic.CanBuildFrom<scala.collection.TraversableOnce<java.lang.Object>,java.lang.Object,ByteString> canBuildFrom()
           
abstract  CompactByteString compact()
          Create a new ByteString with all contents compacted into a single, full byte array.
 ByteString concat(ByteString that)
          Java API: efficiently concatenate another ByteString.
<B> void
copyToArray(java.lang.Object xs, int start, int len)
           
 int copyToBuffer(java.nio.ByteBuffer buffer)
          Copy as many bytes as possible to a ByteBuffer, starting from it's current position.
abstract  java.lang.String decodeString(java.lang.String charset)
          Decodes this ByteString using a charset to produce a String.
 ByteString drop(int n)
           
 ByteString dropRight(int n)
           
 ByteString dropWhile(scala.Function1<java.lang.Object,java.lang.Object> p)
           
static ByteString empty()
           
<U> void
foreach(scala.Function1<java.lang.Object,U> f)
           
static ByteString fromArray(byte[] array)
          Creates a new ByteString by copying a byte array.
static ByteString fromArray(byte[] array, int offset, int length)
          Creates a new ByteString by copying length bytes starting at offset from an Array.
static ByteString fromByteBuffer(java.nio.ByteBuffer buffer)
          Creates a new ByteString by copying bytes out of a ByteBuffer.
static ByteString fromString(java.lang.String string)
          Creates a new ByteString which will contain the UTF-8 representation of the given String
static ByteString fromString(java.lang.String string, java.lang.String charset)
          Creates a new ByteString which will contain the representation of the given String in the given charset
 java.lang.Iterable<java.nio.ByteBuffer> getByteBuffers()
          Java API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments.
 byte head()
           
<B> int
indexOf(B elem)
           
 int indexWhere(scala.Function1<java.lang.Object,java.lang.Object> p)
           
 ByteString init()
           
abstract  boolean isCompact()
          Check whether this ByteString is compact in memory.
 ByteIterator iterator()
           
 byte last()
           
 ByteString mapI(scala.Function1<java.lang.Object,java.lang.Object> f)
          map method that will automatically cast Int back into Byte.
protected  ByteStringBuilder newBuilder()
           
 ByteString slice(int from, int until)
           
 scala.Tuple2<ByteString,ByteString> span(scala.Function1<java.lang.Object,java.lang.Object> p)
           
 scala.Tuple2<ByteString,ByteString> splitAt(int n)
           
 ByteString tail()
           
 ByteString take(int n)
           
 ByteString takeRight(int n)
           
 ByteString takeWhile(scala.Function1<java.lang.Object,java.lang.Object> p)
           
protected  byte[] toArray()
          Java API: copy this ByteString into a fresh byte array
<B> java.lang.Object
toArray(scala.reflect.ClassTag<B> arg0)
           
 java.nio.ByteBuffer toByteBuffer()
          Creates a new ByteBuffer with a copy of all bytes contained in this ByteString.
 java.lang.String utf8String()
          Decodes this ByteString as a UTF-8 encoded String.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface scala.collection.immutable.IndexedSeq
companion, seq, toIndexedSeq
 
Methods inherited from interface scala.collection.immutable.Seq
parCombiner, toSeq
 
Methods inherited from interface scala.PartialFunction
andThen, applyOrElse, isDefinedAt, lift, orElse, runWith
 
Methods inherited from interface scala.Function1
andThen$mcDD$sp, andThen$mcDF$sp, andThen$mcDI$sp, andThen$mcDJ$sp, andThen$mcFD$sp, andThen$mcFF$sp, andThen$mcFI$sp, andThen$mcFJ$sp, andThen$mcID$sp, andThen$mcIF$sp, andThen$mcII$sp, andThen$mcIJ$sp, andThen$mcJD$sp, andThen$mcJF$sp, andThen$mcJI$sp, andThen$mcJJ$sp, andThen$mcVD$sp, andThen$mcVF$sp, andThen$mcVI$sp, andThen$mcVJ$sp, andThen$mcZD$sp, andThen$mcZF$sp, andThen$mcZI$sp, andThen$mcZJ$sp, apply, apply$mcDD$sp, apply$mcDF$sp, apply$mcDI$sp, apply$mcDJ$sp, apply$mcFD$sp, apply$mcFF$sp, apply$mcFI$sp, apply$mcFJ$sp, apply$mcID$sp, apply$mcIF$sp, apply$mcII$sp, apply$mcIJ$sp, apply$mcJD$sp, apply$mcJF$sp, apply$mcJI$sp, apply$mcJJ$sp, apply$mcVD$sp, apply$mcVF$sp, apply$mcVI$sp, apply$mcVJ$sp, apply$mcZD$sp, apply$mcZF$sp, apply$mcZI$sp, apply$mcZJ$sp, compose, compose$mcDD$sp, compose$mcDF$sp, compose$mcDI$sp, compose$mcDJ$sp, compose$mcFD$sp, compose$mcFF$sp, compose$mcFI$sp, compose$mcFJ$sp, compose$mcID$sp, compose$mcIF$sp, compose$mcII$sp, compose$mcIJ$sp, compose$mcJD$sp, compose$mcJF$sp, compose$mcJI$sp, compose$mcJJ$sp, compose$mcVD$sp, compose$mcVF$sp, compose$mcVI$sp, compose$mcVJ$sp, compose$mcZD$sp, compose$mcZF$sp, compose$mcZI$sp, compose$mcZJ$sp, toString
 
Methods inherited from interface scala.collection.IndexedSeqLike
hashCode, thisCollection, toBuffer, toCollection
 
Methods inherited from interface scala.collection.SeqLike
$colon$plus, $plus$colon, combinations, contains, containsSlice, corresponds, diff, distinct, endsWith, indexOfSlice, indexOfSlice, indexWhere, indices, intersect, isEmpty, lastIndexOfSlice, lastIndexOfSlice, lastIndexWhere, length, lengthCompare, padTo, patch, permutations, reverse, reverseIterator, reverseMap, segmentLength, size, sortBy, sorted, sortWith, startsWith, toString, union, updated, view, view
 
Methods inherited from interface scala.collection.IterableLike
canEqual, exists, find, foldRight, forall, grouped, reduceRight, sameElements, sliding, sliding, toIterable, toIterator, toStream, zip, zipAll, zipWithIndex
 
Methods inherited from interface scala.collection.TraversableLike
$plus$plus, $plus$plus$colon, $plus$plus$colon, collect, filter, filterNot, flatMap, groupBy, hasDefiniteSize, headOption, inits, isTraversableAgain, lastOption, map, partition, repr, scan, scanLeft, scanRight, sliceWithKnownBound, sliceWithKnownDelta, stringPrefix, tails, to, toTraversable, withFilter
 
Methods inherited from interface scala.collection.TraversableOnce
$colon$bslash, $div$colon, addString, addString, addString, aggregate, collectFirst, copyToArray, copyToArray, copyToBuffer, count, fold, foldLeft, max, maxBy, min, minBy, mkString, mkString, mkString, nonEmpty, product, reduce, reduceLeft, reduceLeftOption, reduceOption, reduceRightOption, reversed, sum, toList, toMap, toSet, toVector
 
Methods inherited from interface scala.collection.GenSeqLike
equals, indexOf, isDefinedAt, lastIndexOf, lastIndexOf, lastIndexWhere, prefixLength, startsWith
 
Methods inherited from interface scala.collection.GenTraversableOnce
$div$colon$bslash
 
Methods inherited from interface scala.collection.Parallelizable
par
 
Methods inherited from interface scala.collection.IndexedSeqOptimized
endsWith, exists, find, foldLeft, foldRight, forall, indexWhere, isEmpty, lastIndexWhere, lengthCompare, reduceLeft, reduceRight, reverse, reverseIterator, sameElements, scala$collection$IndexedSeqOptimized$$super$endsWith, scala$collection$IndexedSeqOptimized$$super$head, scala$collection$IndexedSeqOptimized$$super$init, scala$collection$IndexedSeqOptimized$$super$last, scala$collection$IndexedSeqOptimized$$super$reduceLeft, scala$collection$IndexedSeqOptimized$$super$reduceRight, scala$collection$IndexedSeqOptimized$$super$sameElements, scala$collection$IndexedSeqOptimized$$super$tail, scala$collection$IndexedSeqOptimized$$super$zip, segmentLength, startsWith, zip, zipWithIndex
 

Constructor Detail

ByteString

public ByteString()
Method Detail

fromArray

public static ByteString fromArray(byte[] array)
Creates a new ByteString by copying a byte array.


fromArray

public static ByteString fromArray(byte[] array,
                                   int offset,
                                   int length)
Creates a new ByteString by copying length bytes starting at offset from an Array.


fromString

public static ByteString fromString(java.lang.String string)
Creates a new ByteString which will contain the UTF-8 representation of the given String


fromString

public static ByteString fromString(java.lang.String string,
                                    java.lang.String charset)
Creates a new ByteString which will contain the representation of the given String in the given charset


fromByteBuffer

public static ByteString fromByteBuffer(java.nio.ByteBuffer buffer)
Creates a new ByteString by copying bytes out of a ByteBuffer.


empty

public static ByteString empty()

canBuildFrom

public static scala.collection.generic.CanBuildFrom<scala.collection.TraversableOnce<java.lang.Object>,java.lang.Object,ByteString> canBuildFrom()

apply

public abstract byte apply(int idx)
Specified by:
apply in interface scala.collection.GenSeqLike<java.lang.Object,ByteString>
Specified by:
apply in interface scala.collection.SeqLike<java.lang.Object,ByteString>

newBuilder

protected ByteStringBuilder newBuilder()
Specified by:
newBuilder in interface scala.collection.generic.GenericTraversableTemplate<java.lang.Object,scala.collection.immutable.IndexedSeq>
Specified by:
newBuilder in interface scala.collection.generic.HasNewBuilder<java.lang.Object,ByteString>
Specified by:
newBuilder in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

iterator

public ByteIterator iterator()
Specified by:
iterator in interface scala.collection.GenIterableLike<java.lang.Object,ByteString>
Specified by:
iterator in interface scala.collection.IndexedSeqLike<java.lang.Object,ByteString>
Specified by:
iterator in interface scala.collection.IterableLike<java.lang.Object,ByteString>

head

public byte head()
Specified by:
head in interface scala.collection.generic.GenericTraversableTemplate<java.lang.Object,scala.collection.immutable.IndexedSeq>
Specified by:
head in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
head in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
head in interface scala.collection.IterableLike<java.lang.Object,ByteString>
Specified by:
head in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

tail

public ByteString tail()
Specified by:
tail in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
tail in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
tail in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

last

public byte last()
Specified by:
last in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
last in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
last in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

init

public ByteString init()
Specified by:
init in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
init in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
init in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

slice

public ByteString slice(int from,
                        int until)
Specified by:
slice in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
slice in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
slice in interface scala.collection.IterableLike<java.lang.Object,ByteString>
Specified by:
slice in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

take

public ByteString take(int n)
Specified by:
take in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
take in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
take in interface scala.collection.IterableLike<java.lang.Object,ByteString>
Specified by:
take in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

takeRight

public ByteString takeRight(int n)
Specified by:
takeRight in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
takeRight in interface scala.collection.IterableLike<java.lang.Object,ByteString>

drop

public ByteString drop(int n)
Specified by:
drop in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
drop in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
drop in interface scala.collection.IterableLike<java.lang.Object,ByteString>
Specified by:
drop in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

dropRight

public ByteString dropRight(int n)
Specified by:
dropRight in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
dropRight in interface scala.collection.IterableLike<java.lang.Object,ByteString>

takeWhile

public ByteString takeWhile(scala.Function1<java.lang.Object,java.lang.Object> p)
Specified by:
takeWhile in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
takeWhile in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
takeWhile in interface scala.collection.IterableLike<java.lang.Object,ByteString>
Specified by:
takeWhile in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

dropWhile

public ByteString dropWhile(scala.Function1<java.lang.Object,java.lang.Object> p)
Specified by:
dropWhile in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
dropWhile in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
dropWhile in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

span

public scala.Tuple2<ByteString,ByteString> span(scala.Function1<java.lang.Object,java.lang.Object> p)
Specified by:
span in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
span in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
span in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

splitAt

public scala.Tuple2<ByteString,ByteString> splitAt(int n)
Specified by:
splitAt in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
splitAt in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
splitAt in interface scala.collection.TraversableLike<java.lang.Object,ByteString>

indexWhere

public int indexWhere(scala.Function1<java.lang.Object,java.lang.Object> p)
Specified by:
indexWhere in interface scala.collection.GenSeqLike<java.lang.Object,ByteString>

indexOf

public <B> int indexOf(B elem)
Specified by:
indexOf in interface scala.collection.GenSeqLike<java.lang.Object,ByteString>

toArray

protected byte[] toArray()
Java API: copy this ByteString into a fresh byte array

Returns:
this ByteString copied into a byte array

toArray

public <B> java.lang.Object toArray(scala.reflect.ClassTag<B> arg0)
Specified by:
toArray in interface scala.collection.GenTraversableOnce<java.lang.Object>
Specified by:
toArray in interface scala.collection.TraversableOnce<java.lang.Object>

copyToArray

public <B> void copyToArray(java.lang.Object xs,
                            int start,
                            int len)
Specified by:
copyToArray in interface scala.collection.GenTraversableOnce<java.lang.Object>
Specified by:
copyToArray in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
copyToArray in interface scala.collection.IterableLike<java.lang.Object,ByteString>
Specified by:
copyToArray in interface scala.collection.TraversableLike<java.lang.Object,ByteString>
Specified by:
copyToArray in interface scala.collection.TraversableOnce<java.lang.Object>

foreach

public <U> void foreach(scala.Function1<java.lang.Object,U> f)
Specified by:
foreach in interface scala.collection.generic.FilterMonadic<java.lang.Object,ByteString>
Specified by:
foreach in interface scala.collection.generic.GenericTraversableTemplate<java.lang.Object,scala.collection.immutable.IndexedSeq>
Specified by:
foreach in interface scala.collection.GenTraversableLike<java.lang.Object,ByteString>
Specified by:
foreach in interface scala.collection.GenTraversableOnce<java.lang.Object>
Specified by:
foreach in interface scala.collection.IndexedSeqOptimized<java.lang.Object,ByteString>
Specified by:
foreach in interface scala.collection.IterableLike<java.lang.Object,ByteString>
Specified by:
foreach in interface scala.collection.TraversableLike<java.lang.Object,ByteString>
Specified by:
foreach in interface scala.collection.TraversableOnce<java.lang.Object>

concat

public ByteString concat(ByteString that)
Java API: efficiently concatenate another ByteString.


copyToBuffer

public int copyToBuffer(java.nio.ByteBuffer buffer)
Copy as many bytes as possible to a ByteBuffer, starting from it's current position. This method will not overflow the buffer.

Parameters:
buffer - a ByteBuffer to copy bytes to
Returns:
the number of bytes actually copied

compact

public abstract CompactByteString compact()
Create a new ByteString with all contents compacted into a single, full byte array. If isCompact returns true, compact is an O(1) operation, but might return a different object with an optimized implementation.


isCompact

public abstract boolean isCompact()
Check whether this ByteString is compact in memory. If the ByteString is compact, it might, however, not be represented by an object that takes full advantage of that fact. Use compact to get such an object.


asByteBuffer

public abstract java.nio.ByteBuffer asByteBuffer()
Returns a read-only ByteBuffer that directly wraps this ByteString if it is not fragmented.


asByteBuffers

public abstract scala.collection.immutable.Iterable<java.nio.ByteBuffer> asByteBuffers()
Scala API: Returns an immutable Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments. Will always have at least one entry.


getByteBuffers

public java.lang.Iterable<java.nio.ByteBuffer> getByteBuffers()
Java API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments. Will always have at least one entry.


toByteBuffer

public java.nio.ByteBuffer toByteBuffer()
Creates a new ByteBuffer with a copy of all bytes contained in this ByteString.


utf8String

public final java.lang.String utf8String()
Decodes this ByteString as a UTF-8 encoded String.


decodeString

public abstract java.lang.String decodeString(java.lang.String charset)
Decodes this ByteString using a charset to produce a String.


mapI

public final ByteString mapI(scala.Function1<java.lang.Object,java.lang.Object> f)
map method that will automatically cast Int back into Byte.