Class ByteString

java.lang.Object
org.apache.pekko.util.ByteString
All Implemented Interfaces:
scala.collection.immutable.IndexedSeq<Object>, scala.collection.immutable.IndexedSeqOps<Object,scala.collection.immutable.IndexedSeq,scala.collection.immutable.IndexedSeq<Object>>, scala.collection.immutable.Iterable<Object>, scala.collection.immutable.Seq<Object>, scala.collection.immutable.SeqOps<Object,scala.collection.immutable.Seq,scala.collection.immutable.Seq<Object>>, scala.collection.immutable.StrictOptimizedSeqOps<Object,scala.collection.immutable.IndexedSeq,ByteString>, scala.collection.IndexedSeq<Object>, scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>, scala.collection.Iterable<Object>, scala.collection.IterableFactoryDefaults<Object,scala.collection.Iterable>, scala.collection.IterableOnce<Object>, scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>, scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>, scala.collection.Seq<Object>, scala.collection.SeqOps<Object,scala.collection.Seq,scala.collection.Seq<Object>>, scala.collection.StrictOptimizedIterableOps<Object,scala.collection.immutable.IndexedSeq,ByteString>, scala.collection.StrictOptimizedSeqOps<Object,scala.collection.immutable.IndexedSeq,ByteString>, scala.Equals, scala.Function1<Object,Object>, scala.PartialFunction<Object,Object>
Direct Known Subclasses:
ByteString.ByteString1, ByteString.ByteStrings, CompactByteString

public abstract class ByteString extends Object implements scala.collection.immutable.IndexedSeq<Object>, scala.collection.immutable.IndexedSeqOps<Object,scala.collection.immutable.IndexedSeq,ByteString>, scala.collection.immutable.StrictOptimizedSeqOps<Object,scala.collection.immutable.IndexedSeq,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

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    An unfragmented ByteString.
    static class 
    INTERNAL API: ByteString backed by exactly one array, with start / end markers
    static final class 
    A compact (unsliced) and unfragmented ByteString, implementation of ByteString1C.
    static class 
     
    static final class 
    A ByteString with 2 or more fragments.
    static class 
     
    static interface 
     
    static class 
     

    Nested classes/interfaces inherited from interface scala.Function1

    scala.Function1.UnliftOps<A extends Object,B extends Object>, scala.Function1.UnliftOps$

    Nested classes/interfaces inherited from interface scala.collection.IterableOps

    scala.collection.IterableOps.SizeCompareOps, scala.collection.IterableOps.SizeCompareOps$, scala.collection.IterableOps.WithFilter<A extends Object,CC extends Object>

    Nested classes/interfaces inherited from interface scala.PartialFunction

    scala.PartialFunction.ElementWiseExtractor<A extends Object,B extends Object>, scala.PartialFunction.ElementWiseExtractor$
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract ByteString
    Efficiently concatenate another ByteString.
    abstract byte
    apply(int idx)
     
    abstract ByteBuffer
    Returns a read-only ByteBuffer that directly wraps this ByteString if it is not fragmented.
    abstract scala.collection.immutable.Iterable<ByteBuffer>
    Scala API: Returns an immutable Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments.
    abstract InputStream
    Return the bytes in this ByteString as an InputStream.
    final String
     
    Create a new ByteString with all contents compacted into a single, full byte array.
    Java API: efficiently concatenate another ByteString.
    boolean
    contains(byte elem)
    Checks if this ByteString contains a specific byte.
    <B> boolean
    contains(B elem)
     
    final <B> int
    copyToArray(Object xs, int start)
     
    <B> int
    copyToArray(Object xs, int start, int len)
     
    abstract int
    Copy as many bytes as possible to a ByteBuffer, starting from it's current position.
    Java API
    abstract ByteString
    Returns a ByteString which is the binary representation of this ByteString if this ByteString is Base64-encoded.
    abstract String
    Decodes this ByteString using a charset to produce a String.
    abstract String
    Decodes this ByteString using a charset to produce a String.
    drop(int n)
     
    dropRight(int n)
     
    dropWhile(scala.Function1<Object,Object> p)
     
     
    static ByteString
    Java API
    abstract ByteString
    Returns a ByteString which is the Base64 representation of this ByteString
    <U> void
    foreach(scala.Function1<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
    fromArrayUnsafe(byte[] array)
    Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.
    static ByteString
    fromArrayUnsafe(byte[] array, int offset, int length)
    Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.
    static ByteString
    Creates a new ByteString by copying bytes out of a ByteBuffer.
    static ByteString
    fromInts(int... array)
    JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes.
    static ByteString
    fromInts(scala.collection.immutable.Seq<Object> array)
    JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes.
    protected ByteString
    fromSpecific(scala.collection.IterableOnce<Object> coll)
     
    static ByteString
    Creates a new ByteString which will contain the UTF-8 representation of the given String
    static ByteString
    fromString(String string, String charset)
    Creates a new ByteString which will contain the representation of the given String in the given charset
    static ByteString
    fromString(String string, Charset charset)
    Creates a new ByteString which will contain the representation of the given String in the given charset
    Java API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments.
    scala.collection.Iterator<ByteString>
    grouped(int size)
     
    byte
     
    int
    indexOf(byte elem)
    Finds index of first occurrence of some byte in this ByteString.
    int
    indexOf(byte elem, int from)
    Finds index of first occurrence of some byte in this ByteString after or at some start index.
    abstract int
    indexOf(byte elem, int from, int to)
    Finds index of first occurrence of some byte in this ByteString after or at some start index.
    <B> int
    indexOf(B elem, int from)
     
    int
    indexWhere(scala.Function1<Object,Object> p, int from)
     
     
    abstract boolean
    Check whether this ByteString is compact in memory.
    boolean
     
     
    byte
     
    map(scala.Function1<Object,Object> f)
     
    mapI(scala.Function1<Object,Object> f)
    map method that will automatically cast Int back into Byte.
     
    protected scala.collection.mutable.Builder<Object,ByteString>
     
    slice(int from, int until)
     
    scala.Tuple2<ByteString,ByteString>
    span(scala.Function1<Object,Object> p)
     
    scala.Tuple2<ByteString,ByteString>
    splitAt(int n)
     
     
    take(int n)
     
    takeRight(int n)
     
    takeWhile(scala.Function1<Object,Object> p)
     
    protected byte[]
    Java API: copy this ByteString into a fresh byte array
    final <B> Object
    toArray(scala.reflect.ClassTag<B> arg0)
     
    byte[]
    Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.
    Creates a new ByteBuffer with a copy of all bytes contained in this ByteString.
     
    static String
    Standard "UTF-8" charset
    final String
    Decodes this ByteString as a UTF-8 encoded String.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface scala.Function1

    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

    Methods inherited from interface scala.collection.immutable.IndexedSeq

    applyPreferredMaxLength, canEqual, iterableFactory, sameElements, toIndexedSeq

    Methods inherited from interface scala.collection.IndexedSeq

    stringPrefix

    Methods inherited from interface scala.collection.IndexedSeqOps

    foldRight, headOption, knownSize, lengthCompare, lengthCompare, map, prepended, reverse, reversed, reverseIterator, search, search, sliding, stepper, view, view

    Methods inherited from interface scala.collection.Iterable

    coll, collectionClassName, lazyZip, seq, toIterable

    Methods inherited from interface scala.collection.IterableOnceOps

    $colon$bslash, $div$colon, addString, addString, addString, aggregate, collectFirst, copyToArray, copyToBuffer, corresponds, count, exists, find, fold, foldLeft, forall, hasDefiniteSize, max, maxBy, maxByOption, maxOption, min, minBy, minByOption, minOption, mkString, mkString, mkString, nonEmpty, product, reduce, reduceLeft, reduceLeftOption, reduceOption, reduceRight, reduceRightOption, sum, to, toBuffer, toIterator, toList, toMap, toSet, toStream, toVector

    Methods inherited from interface scala.collection.IterableOps

    $plus$plus, companion, groupBy, groupMap, groupMapReduce, inits, isTraversableAgain, lastOption, repr, scan, scanRight, sizeIs, sliding, tails, toTraversable, transpose, withFilter, zipAll

    Methods inherited from interface scala.PartialFunction

    andThen, andThen, applyOrElse, compose, elementWise, isDefinedAt, lift, orElse, runWith, unapply

    Methods inherited from interface scala.collection.immutable.Seq

    toSeq

    Methods inherited from interface scala.collection.Seq

    equals, hashCode

    Methods inherited from interface scala.collection.SeqOps

    $colon$plus, $colon$plus$plus, $plus$colon, $plus$plus$colon, combinations, concat, containsSlice, corresponds, distinct, endsWith, findLast, indexOf, indexOfSlice, indexOfSlice, indexWhere, indices, isDefinedAt, lastIndexOf, lastIndexOf$default$2, lastIndexOfSlice, lastIndexOfSlice, lastIndexWhere, lastIndexWhere, length, lengthIs, occCounts, permutations, prefixLength, reverseMap, scala$collection$SeqOps$$toGenericSeq, segmentLength, segmentLength, size, sizeCompare, sizeCompare, sortBy, sortWith, startsWith, startsWith$default$2, union

    Methods inherited from interface scala.collection.StrictOptimizedIterableOps

    collect, filter, filterImpl, filterNot, flatMap, flatten, map, partition, partitionMap, scanLeft, strictOptimizedCollect, strictOptimizedConcat, strictOptimizedFlatMap, strictOptimizedFlatten, strictOptimizedMap, strictOptimizedZip, tapEach, unzip, unzip3, zip, zipWithIndex

    Methods inherited from interface scala.collection.immutable.StrictOptimizedSeqOps

    distinctBy, patch, sorted, updated

    Methods inherited from interface scala.collection.StrictOptimizedSeqOps

    appended, appendedAll, diff, intersect, padTo, prepended, prependedAll
  • Constructor Details

    • ByteString

      public ByteString()
  • Method Details

    • fromInts

      public static ByteString fromInts(int... array)
      JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes.
    • fromArray

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

      public static ByteString fromArrayUnsafe(byte[] array)
      Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.

      Creates a ByteString without copying the passed in byte array, unlike other factory methods defined on ByteString. This method of creating a ByteString saves one array copy and allocation and therefore can lead to better performance, however it also means that one MUST NOT modify the passed in array, or unexpected immutable data structure contract-breaking behavior will manifest itself.

      This API is intended for users who have obtained an byte array from some other API, and want wrap it into an ByteArray, and from there on only use that reference (the ByteString) to operate on the wrapped data. For all other intents and purposes, please use the usual apply and create methods - which provide the immutability guarantees by copying the 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.
    • fromArrayUnsafe

      public static ByteString fromArrayUnsafe(byte[] array, int offset, int length)
      Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.

      Creates a ByteString without copying the passed in byte array, unlike other factory methods defined on ByteString. This method of creating a ByteString saves one array copy and allocation and therefore can lead to better performance, however it also means that one MUST NOT modify the passed in array, or unexpected immutable data structure contract-breaking behavior will manifest itself.

      This API is intended for users who have obtained an byte array from some other API, and want wrap it into an ByteArray, and from there on only use that reference (the ByteString) to operate on the wrapped data. For all other intents and purposes, please use the usual apply and create methods - which provide the immutability guarantees by copying the array.

    • fromInts

      public static ByteString fromInts(scala.collection.immutable.Seq<Object> array)
      JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes.
    • fromString

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

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

      public static ByteString fromString(String string, Charset charset)
      Creates a new ByteString which will contain the representation of the given String in the given charset
    • UTF_8

      public static String UTF_8()
      Standard "UTF-8" charset
    • fromByteBuffer

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

      public static ByteString emptyByteString()
      Java API
    • newBuilder

      public static ByteStringBuilder newBuilder()
    • createBuilder

      public static ByteStringBuilder createBuilder()
      Java API
    • fromSpecific

      protected ByteString fromSpecific(scala.collection.IterableOnce<Object> coll)
      Specified by:
      fromSpecific in interface scala.collection.IterableFactoryDefaults<Object,scala.collection.Iterable>
      Specified by:
      fromSpecific in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • newSpecificBuilder

      protected scala.collection.mutable.Builder<Object,ByteString> newSpecificBuilder()
      Specified by:
      newSpecificBuilder in interface scala.collection.IterableFactoryDefaults<Object,scala.collection.Iterable>
      Specified by:
      newSpecificBuilder in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • empty

      public ByteString empty()
      Specified by:
      empty in interface scala.collection.IterableFactoryDefaults<Object,scala.collection.Iterable>
      Specified by:
      empty in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • apply

      public abstract byte apply(int idx)
      Specified by:
      apply in interface scala.collection.SeqOps<Object,scala.collection.Seq,scala.collection.Seq<Object>>
    • className

      public final String className()
      Specified by:
      className in interface scala.collection.Iterable<Object>
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      isEmpty in interface scala.collection.SeqOps<Object,scala.collection.Seq,scala.collection.Seq<Object>>
    • iterator

      public ByteIterator iterator()
      Specified by:
      iterator in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      iterator in interface scala.collection.IterableOnce<Object>
    • head

      public byte head()
      Specified by:
      head in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      head in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • tail

      public ByteString tail()
      Specified by:
      tail in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • last

      public byte last()
      Specified by:
      last in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      last in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • init

      public ByteString init()
      Specified by:
      init in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • take

      public ByteString take(int n)
      Specified by:
      take in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      take in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      take in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • takeRight

      public ByteString takeRight(int n)
      Specified by:
      takeRight in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      takeRight in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      takeRight in interface scala.collection.StrictOptimizedIterableOps<Object,scala.collection.immutable.IndexedSeq,ByteString>
    • slice

      public ByteString slice(int from, int until)
      Specified by:
      slice in interface scala.collection.immutable.IndexedSeqOps<Object,scala.collection.immutable.IndexedSeq,scala.collection.immutable.IndexedSeq<Object>>
      Specified by:
      slice in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      slice in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      slice in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • drop

      public ByteString drop(int n)
      Specified by:
      drop in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      drop in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      drop in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • dropRight

      public ByteString dropRight(int n)
      Specified by:
      dropRight in interface scala.collection.IndexedSeqOps<Object,scala.collection.IndexedSeq,scala.collection.IndexedSeq<Object>>
      Specified by:
      dropRight in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      dropRight in interface scala.collection.StrictOptimizedIterableOps<Object,scala.collection.immutable.IndexedSeq,ByteString>
    • takeWhile

      public ByteString takeWhile(scala.Function1<Object,Object> p)
      Specified by:
      takeWhile in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      takeWhile in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • dropWhile

      public ByteString dropWhile(scala.Function1<Object,Object> p)
      Specified by:
      dropWhile in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      dropWhile in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • span

      public scala.Tuple2<ByteString,ByteString> span(scala.Function1<Object,Object> p)
      Specified by:
      span in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      span in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      span in interface scala.collection.StrictOptimizedIterableOps<Object,scala.collection.immutable.IndexedSeq,ByteString>
    • splitAt

      public scala.Tuple2<ByteString,ByteString> splitAt(int n)
      Specified by:
      splitAt in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
      Specified by:
      splitAt in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • indexWhere

      public int indexWhere(scala.Function1<Object,Object> p, int from)
      Specified by:
      indexWhere in interface scala.collection.SeqOps<Object,scala.collection.Seq,scala.collection.Seq<Object>>
    • indexOf

      public <B> int indexOf(B elem, int from)
      Specified by:
      indexOf in interface scala.collection.SeqOps<Object,scala.collection.Seq,scala.collection.Seq<Object>>
    • indexOf

      public abstract int indexOf(byte elem, int from, int to)
      Finds index of first occurrence of some byte in this ByteString after or at some start index. This overload allows you to specify an end index (exclusive).

      Parameters:
      elem - the element value to search for.
      from - the start index
      to - the end index (exclusive)
      Returns:
      the index >= from and < to of the first element of this ByteString that is equal (as determined by ==) to elem, or -1, if none exists.
      Since:
      1.3.0
    • indexOf

      public int indexOf(byte elem, int from)
      Finds index of first occurrence of some byte in this ByteString after or at some start index.

      Similar to indexOf, but it avoids boxing if the value is already a byte.

      Parameters:
      elem - the element value to search for.
      from - the start index
      Returns:
      the index >= from of the first element of this ByteString that is equal (as determined by ==) to elem, or -1, if none exists.
      Since:
      1.1.0
    • indexOf

      public int indexOf(byte elem)
      Finds index of first occurrence of some byte in this ByteString.

      Similar to indexOf, but it avoids boxing if the value is already a byte.

      Parameters:
      elem - the element value to search for.
      Returns:
      the index >= from of the first element of this ByteString that is equal (as determined by ==) to elem, or -1, if none exists.
      Since:
      1.1.0
    • contains

      public <B> boolean contains(B elem)
      Specified by:
      contains in interface scala.collection.SeqOps<Object,scala.collection.Seq,scala.collection.Seq<Object>>
    • contains

      public boolean contains(byte elem)
      Checks if this ByteString contains a specific byte. Similar to Seq's contains function, but it avoids boxing if the value is already a byte.
      Since:
      2.0.0
    • grouped

      public scala.collection.Iterator<ByteString> grouped(int size)
      Specified by:
      grouped in interface scala.collection.IterableOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • toString

      public String toString()
      Specified by:
      toString in interface scala.Function1<Object,Object>
      Specified by:
      toString in interface scala.collection.Iterable<Object>
      Specified by:
      toString in interface scala.collection.Seq<Object>
      Overrides:
      toString in class Object
    • toArray

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

      Returns:
      this ByteString copied into a byte array
    • toArray

      public final <B> Object toArray(scala.reflect.ClassTag<B> arg0)
      Specified by:
      toArray in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • copyToArray

      public final <B> int copyToArray(Object xs, int start)
      Specified by:
      copyToArray in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • copyToArray

      public <B> int copyToArray(Object xs, int start, int len)
      Specified by:
      copyToArray in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • toArrayUnsafe

      public byte[] toArrayUnsafe()
      Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.

      If the ByteString is backed by a single array it is returned without any copy. If it is backed by a rope of multiple ByteString instances a new array will be allocated and the contents will be copied into it before returning it.

      This method of exposing the bytes of a ByteString can save one array copy and allocation in the happy path scenario which can lead to better performance, however it also means that one MUST NOT modify the returned array, or unexpected immutable data structure contract-breaking behavior will manifest itself.

      This API is intended for users who need to pass the byte array to some other API, which will only read the bytes and never mutate then. For all other intents and purposes, please use the usual toArray method - which provide the immutability guarantees by copying the backing array.

    • asInputStream

      public abstract InputStream asInputStream()
      Return the bytes in this ByteString as an InputStream.

      Returns:
      the bytes in this ByteString accessible as an InputStream
      Since:
      1.1.0
      See Also:
    • foreach

      public <U> void foreach(scala.Function1<Object,U> f)
      Specified by:
      foreach in interface scala.collection.IterableOnceOps<Object,scala.collection.Iterable,scala.collection.Iterable>
    • $plus$plus

      public abstract ByteString $plus$plus(ByteString that)
      Efficiently concatenate another ByteString.
    • concat

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

      public abstract int copyToBuffer(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 ByteBuffer asByteBuffer()
      Returns a read-only ByteBuffer that directly wraps this ByteString if it is not fragmented.
    • asByteBuffers

      public abstract scala.collection.immutable.Iterable<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 Iterable<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 ByteBuffer toByteBuffer()
      Creates a new ByteBuffer with a copy of all bytes contained in this ByteString.
    • utf8String

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

      public abstract String decodeString(String charset)
      Decodes this ByteString using a charset to produce a String. If you have a Charset instance available, use decodeString(charset: java.nio.charset.Charset instead.
    • decodeString

      public abstract String decodeString(Charset charset)
      Decodes this ByteString using a charset to produce a String. Avoids Charset.forName lookup in String internals, thus is preferable to decodeString(charset: String).
    • decodeBase64

      public abstract ByteString decodeBase64()
      Returns a ByteString which is the binary representation of this ByteString if this ByteString is Base64-encoded.
    • encodeBase64

      public abstract ByteString encodeBase64()
      Returns a ByteString which is the Base64 representation of this ByteString
    • mapI

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

      public <A> ByteString map(scala.Function1<Object,Object> f)