Class OtpOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

    public class OtpOutputStream
    extends java.io.ByteArrayOutputStream
    Provides a stream for encoding Erlang terms to external format, for transmission or storage.

    Note that this class is not synchronized, if you need synchronization you must provide it yourself.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int defaultIncrement
      The default increment used when growing the stream (increment at least this much).
      static int defaultInitialSize
      The default initial size of the stream.
      • Fields inherited from class java.io.ByteArrayOutputStream

        buf, count
    • Constructor Summary

      Constructors 
      Constructor Description
      OtpOutputStream()
      Create a stream with the default initial size (2048 bytes).
      OtpOutputStream​(int size)
      Create a stream with the specified initial size.
      OtpOutputStream​(OtpErlangObject o)
      Create a stream containing the encoded version of the given Erlang term.
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      int count()
      Deprecated.
      As of Jinterface 1.4, replaced by super.size().
      void ensureCapacity​(int minCapacity)
      Increases the capacity of this OtpOutputStream instance, if necessary, to ensure that it can hold at least the number of elements specified by the minimum capacity argument.
      int getPos()
      Get the current position in the stream.
      int length()
      Get the current capacity of the stream.
      void poke4BE​(int offset, long n)
      Write the low four bytes of a value to the stream in bif endian order, at the specified position.
      void trimToSize()
      Trims the capacity of this OtpOutputStream instance to be the buffer's current size.
      void write​(byte b)
      Write one byte to the stream.
      void write​(byte[] abuf)  
      void write​(byte[] b, int off, int len)  
      void write​(int b)  
      void write_any​(OtpErlangObject o)
      Write an arbitrary Erlang term to the stream.
      void write_atom​(java.lang.String atom)
      Write a string to the stream as an Erlang atom.
      void write_big_integer​(java.math.BigInteger v)  
      void write_binary​(byte[] bin)
      Write an array of bytes to the stream as an Erlang binary.
      void write_bitstr​(byte[] bin, int pad_bits)
      Write an array of bytes to the stream as an Erlang bitstr.
      void write_boolean​(boolean b)
      Write a boolean value to the stream as the Erlang atom 'true' or 'false'.
      void write_byte​(byte b)
      Write a single byte to the stream as an Erlang integer.
      void write_char​(char c)
      Write a character to the stream as an Erlang integer.
      void write_compressed​(OtpErlangObject o)
      Write an arbitrary Erlang term to the stream in compressed format.
      void write_compressed​(OtpErlangObject o, int level)
      Write an arbitrary Erlang term to the stream in compressed format.
      void write_double​(double d)
      Write a double value to the stream.
      void write_external_fun​(java.lang.String module, java.lang.String function, int arity)  
      void write_float​(float f)
      Write a float value to the stream.
      void write_fun​(OtpErlangPid pid, java.lang.String module, long old_index, int arity, byte[] md5, long index, long uniq, OtpErlangObject[] freeVars)  
      void write_int​(int i)
      Write an integer to the stream.
      void write_list_head​(int arity)
      Write an Erlang list header to the stream.
      void write_long​(long l)
      Write a long to the stream.
      void write_map_head​(int arity)  
      void write_nil()
      Write an empty Erlang list to the stream.
      void write_pid​(OtpErlangPid pid)
      Write an Erlang PID to the stream.
      void write_pid​(java.lang.String node, int id, int serial, int creation)
      Write an Erlang PID to the stream.
      void write_port​(OtpErlangPort port)
      Write an Erlang port to the stream.
      void write_port​(java.lang.String node, int id, int creation)
      Write an Erlang port to the stream.
      void write_ref​(OtpErlangRef ref)
      Write an Erlang ref to the stream.
      void write_ref​(java.lang.String node, int[] ids, int creation)
      Write an Erlang ref to the stream.
      void write_ref​(java.lang.String node, int id, int creation)
      Write an old style Erlang ref to the stream.
      void write_short​(short s)
      Write a short to the stream.
      void write_string​(java.lang.String s)
      Write a string to the stream.
      void write_tuple_head​(int arity)
      Write an Erlang tuple header to the stream.
      void write_uint​(int ui)
      Write a positive integer to the stream.
      void write_ulong​(long ul)
      Write a positive long to the stream.
      void write_ushort​(short us)
      Write a positive short to the stream.
      void write1​(long n)
      Write the low byte of a value to the stream.
      void write2BE​(long n)
      Write the low two bytes of a value to the stream in big endian order.
      void write2LE​(long n)
      Write the low two bytes of a value to the stream in little endian order.
      void write4BE​(long n)
      Write the low four bytes of a value to the stream in big endian order.
      void write4LE​(long n)
      Write the low four bytes of a value to the stream in little endian order.
      void write8BE​(long n)
      Write the low eight (all) bytes of a value to the stream in big endian order.
      void write8LE​(long n)
      Write the low eight bytes of a value to the stream in little endian order.
      void writeLE​(long n, int b)
      Write any number of bytes in little endian format.
      void writeN​(byte[] bytes)
      Write an array of bytes to the stream.
      void writeTo​(java.io.OutputStream out)  
      void writeToAndFlush​(java.io.OutputStream out)  
      • Methods inherited from class java.io.ByteArrayOutputStream

        close, reset, size, toByteArray, toString, toString, toString, toString, writeBytes
      • Methods inherited from class java.io.OutputStream

        flush, nullOutputStream
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • defaultInitialSize

        public static final int defaultInitialSize
        The default initial size of the stream. *
        See Also:
        Constant Field Values
      • defaultIncrement

        public static final int defaultIncrement
        The default increment used when growing the stream (increment at least this much). *
        See Also:
        Constant Field Values
    • Constructor Detail

      • OtpOutputStream

        public OtpOutputStream()
        Create a stream with the default initial size (2048 bytes).
      • OtpOutputStream

        public OtpOutputStream​(int size)
        Create a stream with the specified initial size.
      • OtpOutputStream

        public OtpOutputStream​(OtpErlangObject o)
        Create a stream containing the encoded version of the given Erlang term.
    • Method Detail

      • getPos

        public int getPos()
        Get the current position in the stream.
        Returns:
        the current position in the stream.
      • trimToSize

        public void trimToSize()
        Trims the capacity of this OtpOutputStream instance to be the buffer's current size. An application can use this operation to minimize the storage of an OtpOutputStream instance.
      • ensureCapacity

        public void ensureCapacity​(int minCapacity)
        Increases the capacity of this OtpOutputStream instance, if necessary, to ensure that it can hold at least the number of elements specified by the minimum capacity argument.
        Parameters:
        minCapacity - the desired minimum capacity
      • write

        public void write​(byte b)
        Write one byte to the stream.
        Parameters:
        b - the byte to write.
      • write

        public void write​(byte[] abuf)
        Overrides:
        write in class java.io.OutputStream
      • write

        public void write​(int b)
        Overrides:
        write in class java.io.ByteArrayOutputStream
      • write

        public void write​(byte[] b,
                          int off,
                          int len)
        Overrides:
        write in class java.io.ByteArrayOutputStream
      • writeTo

        public void writeTo​(java.io.OutputStream out)
                     throws java.io.IOException
        Overrides:
        writeTo in class java.io.ByteArrayOutputStream
        Throws:
        java.io.IOException
      • writeToAndFlush

        public void writeToAndFlush​(java.io.OutputStream out)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • write1

        public void write1​(long n)
        Write the low byte of a value to the stream.
        Parameters:
        n - the value to use.
      • writeN

        public void writeN​(byte[] bytes)
        Write an array of bytes to the stream.
        Parameters:
        bytes - the array of bytes to write.
      • length

        public int length()
        Get the current capacity of the stream. As bytes are added the capacity of the stream is increased automatically, however this method returns the current size.
        Returns:
        the size of the internal buffer used by the stream.
      • count

        @Deprecated
        public int count()
        Deprecated.
        As of Jinterface 1.4, replaced by super.size().
        Get the number of bytes in the stream.
        Returns:
        the number of bytes in the stream.
        See Also:
        ByteArrayOutputStream.size()
      • write2BE

        public void write2BE​(long n)
        Write the low two bytes of a value to the stream in big endian order.
        Parameters:
        n - the value to use.
      • write4BE

        public void write4BE​(long n)
        Write the low four bytes of a value to the stream in big endian order.
        Parameters:
        n - the value to use.
      • write8BE

        public void write8BE​(long n)
        Write the low eight (all) bytes of a value to the stream in big endian order.
        Parameters:
        n - the value to use.
      • writeLE

        public void writeLE​(long n,
                            int b)
        Write any number of bytes in little endian format.
        Parameters:
        n - the value to use.
        b - the number of bytes to write from the little end.
      • write2LE

        public void write2LE​(long n)
        Write the low two bytes of a value to the stream in little endian order.
        Parameters:
        n - the value to use.
      • write4LE

        public void write4LE​(long n)
        Write the low four bytes of a value to the stream in little endian order.
        Parameters:
        n - the value to use.
      • write8LE

        public void write8LE​(long n)
        Write the low eight bytes of a value to the stream in little endian order.
        Parameters:
        n - the value to use.
      • poke4BE

        public void poke4BE​(int offset,
                            long n)
        Write the low four bytes of a value to the stream in bif endian order, at the specified position. If the position specified is beyond the end of the stream, this method will have no effect. Normally this method should be used in conjunction with size(), when is is necessary to insert data into the stream before it is known what the actual value should be. For example:
         int pos = s.size();
            s.write4BE(0); // make space for length data,
                           // but final value is not yet known
             [ ...more write statements...]
            // later... when we know the length value
            s.poke4BE(pos, length);
         
        Parameters:
        offset - the position in the stream.
        n - the value to use.
      • write_atom

        public void write_atom​(java.lang.String atom)
        Write a string to the stream as an Erlang atom.
        Parameters:
        atom - the string to write.
      • write_binary

        public void write_binary​(byte[] bin)
        Write an array of bytes to the stream as an Erlang binary.
        Parameters:
        bin - the array of bytes to write.
      • write_bitstr

        public void write_bitstr​(byte[] bin,
                                 int pad_bits)
        Write an array of bytes to the stream as an Erlang bitstr.
        Parameters:
        bin - the array of bytes to write.
        pad_bits - the number of zero pad bits at the low end of the last byte
      • write_boolean

        public void write_boolean​(boolean b)
        Write a boolean value to the stream as the Erlang atom 'true' or 'false'.
        Parameters:
        b - the boolean value to write.
      • write_byte

        public void write_byte​(byte b)
        Write a single byte to the stream as an Erlang integer. The byte is really an IDL 'octet', that is, unsigned.
        Parameters:
        b - the byte to use.
      • write_char

        public void write_char​(char c)
        Write a character to the stream as an Erlang integer. The character may be a 16 bit character, kind of IDL 'wchar'. It is up to the Erlang side to take care of souch, if they should be used.
        Parameters:
        c - the character to use.
      • write_double

        public void write_double​(double d)
        Write a double value to the stream.
        Parameters:
        d - the double to use.
      • write_float

        public void write_float​(float f)
        Write a float value to the stream.
        Parameters:
        f - the float to use.
      • write_big_integer

        public void write_big_integer​(java.math.BigInteger v)
      • write_long

        public void write_long​(long l)
        Write a long to the stream.
        Parameters:
        l - the long to use.
      • write_ulong

        public void write_ulong​(long ul)
        Write a positive long to the stream. The long is interpreted as a two's complement unsigned long even if it is negative.
        Parameters:
        ul - the long to use.
      • write_int

        public void write_int​(int i)
        Write an integer to the stream.
        Parameters:
        i - the integer to use.
      • write_uint

        public void write_uint​(int ui)
        Write a positive integer to the stream. The integer is interpreted as a two's complement unsigned integer even if it is negative.
        Parameters:
        ui - the integer to use.
      • write_short

        public void write_short​(short s)
        Write a short to the stream.
        Parameters:
        s - the short to use.
      • write_ushort

        public void write_ushort​(short us)
        Write a positive short to the stream. The short is interpreted as a two's complement unsigned short even if it is negative.
        Parameters:
        us - the short to use.
      • write_list_head

        public void write_list_head​(int arity)
        Write an Erlang list header to the stream. After calling this method, you must write 'arity' elements to the stream followed by nil, or it will not be possible to decode it later.
        Parameters:
        arity - the number of elements in the list.
      • write_nil

        public void write_nil()
        Write an empty Erlang list to the stream.
      • write_tuple_head

        public void write_tuple_head​(int arity)
        Write an Erlang tuple header to the stream. After calling this method, you must write 'arity' elements to the stream or it will not be possible to decode it later.
        Parameters:
        arity - the number of elements in the tuple.
      • write_pid

        public void write_pid​(java.lang.String node,
                              int id,
                              int serial,
                              int creation)
        Write an Erlang PID to the stream.
        Parameters:
        node - the nodename.
        id - an arbitrary number. Only the low order 15 bits will be used.
        serial - another arbitrary number. Only the low order 13 bits will be used.
        creation - yet another arbitrary number. Only the low order 2 bits will be used.
      • write_pid

        public void write_pid​(OtpErlangPid pid)
        Write an Erlang PID to the stream.
        Parameters:
        pid - the pid
      • write_port

        public void write_port​(java.lang.String node,
                               int id,
                               int creation)
        Write an Erlang port to the stream.
        Parameters:
        node - the nodename.
        id - an arbitrary number. Only the low order 28 bits will be used.
        creation - another arbitrary number. Only the low order 2 bits will be used.
      • write_port

        public void write_port​(OtpErlangPort port)
        Write an Erlang port to the stream.
        Parameters:
        port - the port.
      • write_ref

        public void write_ref​(java.lang.String node,
                              int id,
                              int creation)
        Write an old style Erlang ref to the stream.
        Parameters:
        node - the nodename.
        id - an arbitrary number. Only the low order 18 bits will be used.
        creation - another arbitrary number.
      • write_ref

        public void write_ref​(java.lang.String node,
                              int[] ids,
                              int creation)
        Write an Erlang ref to the stream.
        Parameters:
        node - the nodename.
        ids - an array of arbitrary numbers. Only the low order 18 bits of the first number will be used. At most three numbers will be read from the array.
        creation - another arbitrary number. Only the low order 2 bits will be used.
      • write_ref

        public void write_ref​(OtpErlangRef ref)
        Write an Erlang ref to the stream.
        Parameters:
        ref - the reference
      • write_string

        public void write_string​(java.lang.String s)
        Write a string to the stream.
        Parameters:
        s - the string to write.
      • write_compressed

        public void write_compressed​(OtpErlangObject o)
        Write an arbitrary Erlang term to the stream in compressed format.
        Parameters:
        o - the Erlang term to write.
      • write_compressed

        public void write_compressed​(OtpErlangObject o,
                                     int level)
        Write an arbitrary Erlang term to the stream in compressed format.
        Parameters:
        o - the Erlang term to write.
        level - the compression level (0..9)
      • write_any

        public void write_any​(OtpErlangObject o)
        Write an arbitrary Erlang term to the stream.
        Parameters:
        o - the Erlang term to write.
      • write_fun

        public void write_fun​(OtpErlangPid pid,
                              java.lang.String module,
                              long old_index,
                              int arity,
                              byte[] md5,
                              long index,
                              long uniq,
                              OtpErlangObject[] freeVars)
      • write_external_fun

        public void write_external_fun​(java.lang.String module,
                                       java.lang.String function,
                                       int arity)
      • write_map_head

        public void write_map_head​(int arity)