Package io.protostuff

Class ProtobufIOUtil


  • public final class ProtobufIOUtil
    extends java.lang.Object
    Protobuf ser/deser util for messages/objects.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ProtobufIOUtil()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static <T> int mergeDelimitedFrom​(java.io.DataInput in, T message, Schema<T> schema)
      Used by the code generated messages that implement Externalizable.
      static <T> int mergeDelimitedFrom​(java.io.InputStream in, T message, Schema<T> schema)
      Merges the message (delimited) from the InputStream using the given schema.
      static <T> int mergeDelimitedFrom​(java.io.InputStream in, T message, Schema<T> schema, LinkedBuffer buffer)
      Merges the message (delimited) from the InputStream using the given schema.
      static <T> void mergeFrom​(byte[] data, int offset, int length, T message, Schema<T> schema)
      Merges the message with the byte array using the given schema.
      static <T> void mergeFrom​(byte[] data, T message, Schema<T> schema)
      Merges the message with the byte array using the given schema.
      static <T> void mergeFrom​(java.io.InputStream in, T message, Schema<T> schema)
      Merges the message from the InputStream using the given schema.
      static <T> void mergeFrom​(java.io.InputStream in, T message, Schema<T> schema, LinkedBuffer buffer)
      Merges the message from the InputStream using the given schema.
      static Pipe newPipe​(byte[] data)
      Creates a protobuf pipe from a byte array.
      static Pipe newPipe​(byte[] data, int offset, int len)
      Creates a protobuf pipe from a byte array.
      static Pipe newPipe​(java.io.InputStream in)
      Creates a protobuf pipe from an InputStream.
      static <T> boolean optMergeDelimitedFrom​(java.io.InputStream in, T message, Schema<T> schema, boolean drainRemainingBytesIfTooLarge, LinkedBuffer buffer)
      Optimal/Optional mergeDelimitedFrom - If the message does not fit the buffer, no merge is done and this method will return false.
      static <T> boolean optMergeDelimitedFrom​(java.io.InputStream in, T message, Schema<T> schema, LinkedBuffer buffer)
      Optimal/Optional mergeDelimitedFrom - If the message does not fit the buffer, no merge is done and this method will return false.
      static <T> int optWriteDelimitedTo​(java.io.OutputStream out, T message, Schema<T> schema, LinkedBuffer buffer)
      Optimal writeDelimitedTo - The varint32 prefix is written to the buffer instead of directly writing to outputstream.
      static <T> java.util.List<T> parseListFrom​(java.io.InputStream in, Schema<T> schema)
      Parses the messages (delimited) from the InputStream using the given schema.
      static <T> byte[] toByteArray​(T message, Schema<T> schema, LinkedBuffer buffer)
      Serializes the message into a byte array using the given schema.
      static <T> int writeDelimitedTo​(java.io.DataOutput out, T message, Schema<T> schema)
      Used by the code generated messages that implement Externalizable.
      static <T> int writeDelimitedTo​(java.io.OutputStream out, T message, Schema<T> schema, LinkedBuffer buffer)
      Serializes the message, prefixed with its length, into an OutputStream.
      static <T> int writeListTo​(java.io.OutputStream out, java.util.List<T> messages, Schema<T> schema, LinkedBuffer buffer)
      Serializes the messages (delimited) into an OutputStream using the given schema.
      static <T> int writeTo​(LinkedBuffer buffer, T message, Schema<T> schema)
      Writes the message into the LinkedBuffer using the given schema.
      static <T> int writeTo​(java.io.OutputStream out, T message, Schema<T> schema, LinkedBuffer buffer)
      Serializes the message into an OutputStream using the given schema.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ProtobufIOUtil

        private ProtobufIOUtil()
    • Method Detail

      • newPipe

        public static Pipe newPipe​(byte[] data)
        Creates a protobuf pipe from a byte array.
      • newPipe

        public static Pipe newPipe​(byte[] data,
                                   int offset,
                                   int len)
        Creates a protobuf pipe from a byte array.
      • newPipe

        public static Pipe newPipe​(java.io.InputStream in)
        Creates a protobuf pipe from an InputStream.
      • mergeFrom

        public static <T> void mergeFrom​(byte[] data,
                                         T message,
                                         Schema<T> schema)
        Merges the message with the byte array using the given schema.
      • mergeFrom

        public static <T> void mergeFrom​(byte[] data,
                                         int offset,
                                         int length,
                                         T message,
                                         Schema<T> schema)
        Merges the message with the byte array using the given schema.
      • mergeFrom

        public static <T> void mergeFrom​(java.io.InputStream in,
                                         T message,
                                         Schema<T> schema)
                                  throws java.io.IOException
        Merges the message from the InputStream using the given schema.
        Throws:
        java.io.IOException
      • mergeFrom

        public static <T> void mergeFrom​(java.io.InputStream in,
                                         T message,
                                         Schema<T> schema,
                                         LinkedBuffer buffer)
                                  throws java.io.IOException
        Merges the message from the InputStream using the given schema.

        The buffer's internal byte array will be used for reading the message.

        Throws:
        java.io.IOException
      • mergeDelimitedFrom

        public static <T> int mergeDelimitedFrom​(java.io.InputStream in,
                                                 T message,
                                                 Schema<T> schema)
                                          throws java.io.IOException
        Merges the message (delimited) from the InputStream using the given schema.
        Returns:
        the size of the message
        Throws:
        java.io.IOException
      • mergeDelimitedFrom

        public static <T> int mergeDelimitedFrom​(java.io.InputStream in,
                                                 T message,
                                                 Schema<T> schema,
                                                 LinkedBuffer buffer)
                                          throws java.io.IOException
        Merges the message (delimited) from the InputStream using the given schema.

        The delimited message size must not be larger than the buffer's size/capacity. ProtobufException "size limit exceeded" is thrown otherwise.

        Returns:
        the size of the message
        Throws:
        java.io.IOException
      • mergeDelimitedFrom

        public static <T> int mergeDelimitedFrom​(java.io.DataInput in,
                                                 T message,
                                                 Schema<T> schema)
                                          throws java.io.IOException
        Used by the code generated messages that implement Externalizable. Merges from the DataInput.
        Returns:
        the size of the message
        Throws:
        java.io.IOException
      • toByteArray

        public static <T> byte[] toByteArray​(T message,
                                             Schema<T> schema,
                                             LinkedBuffer buffer)
        Serializes the message into a byte array using the given schema.
        Returns:
        the byte array containing the data.
      • writeTo

        public static <T> int writeTo​(LinkedBuffer buffer,
                                      T message,
                                      Schema<T> schema)
        Writes the message into the LinkedBuffer using the given schema.
        Returns:
        the size of the message
      • writeTo

        public static <T> int writeTo​(java.io.OutputStream out,
                                      T message,
                                      Schema<T> schema,
                                      LinkedBuffer buffer)
                               throws java.io.IOException
        Serializes the message into an OutputStream using the given schema.
        Returns:
        the size of the message
        Throws:
        java.io.IOException
      • writeDelimitedTo

        public static <T> int writeDelimitedTo​(java.io.OutputStream out,
                                               T message,
                                               Schema<T> schema,
                                               LinkedBuffer buffer)
                                        throws java.io.IOException
        Serializes the message, prefixed with its length, into an OutputStream.
        Returns:
        the size of the message
        Throws:
        java.io.IOException
      • writeDelimitedTo

        public static <T> int writeDelimitedTo​(java.io.DataOutput out,
                                               T message,
                                               Schema<T> schema)
                                        throws java.io.IOException
        Used by the code generated messages that implement Externalizable. Writes to the DataOutput .
        Returns:
        the size of the message.
        Throws:
        java.io.IOException
      • writeListTo

        public static <T> int writeListTo​(java.io.OutputStream out,
                                          java.util.List<T> messages,
                                          Schema<T> schema,
                                          LinkedBuffer buffer)
                                   throws java.io.IOException
        Serializes the messages (delimited) into an OutputStream using the given schema.
        Returns:
        the total size of the messages (excluding the length prefix varint)
        Throws:
        java.io.IOException
      • parseListFrom

        public static <T> java.util.List<T> parseListFrom​(java.io.InputStream in,
                                                          Schema<T> schema)
                                                   throws java.io.IOException
        Parses the messages (delimited) from the InputStream using the given schema.
        Returns:
        the list containing the messages.
        Throws:
        java.io.IOException
      • optMergeDelimitedFrom

        public static <T> boolean optMergeDelimitedFrom​(java.io.InputStream in,
                                                        T message,
                                                        Schema<T> schema,
                                                        LinkedBuffer buffer)
                                                 throws java.io.IOException
        Optimal/Optional mergeDelimitedFrom - If the message does not fit the buffer, no merge is done and this method will return false.

        This is strictly for reading a single message from the stream because the buffer is aggressively filled when reading the delimited size (which could result into reading more bytes than it has to).

        The remaining bytes will be drained (consumed and discared) when the message is too large.

        Throws:
        java.io.IOException
      • optMergeDelimitedFrom

        public static <T> boolean optMergeDelimitedFrom​(java.io.InputStream in,
                                                        T message,
                                                        Schema<T> schema,
                                                        boolean drainRemainingBytesIfTooLarge,
                                                        LinkedBuffer buffer)
                                                 throws java.io.IOException
        Optimal/Optional mergeDelimitedFrom - If the message does not fit the buffer, no merge is done and this method will return false.

        This is strictly for reading a single message from the stream because the buffer is aggressively filled when reading the delimited size (which could result into reading more bytes than it has to).

        Throws:
        java.io.IOException
      • optWriteDelimitedTo

        public static <T> int optWriteDelimitedTo​(java.io.OutputStream out,
                                                  T message,
                                                  Schema<T> schema,
                                                  LinkedBuffer buffer)
                                           throws java.io.IOException
        Optimal writeDelimitedTo - The varint32 prefix is written to the buffer instead of directly writing to outputstream.
        Returns:
        the size of the message
        Throws:
        java.io.IOException