Class WritingPofHandler

All Implemented Interfaces:
PofConstants, PofHandler

public class WritingPofHandler extends PofHelper implements PofHandler
An implementation of PofHandler that writes a POF stream to a WriteBuffer using a BufferOutput object.
Since:
Coherence 3.2
Author:
cp 2006.07.11
  • Constructor Details

    • WritingPofHandler

      public WritingPofHandler(WriteBuffer.BufferOutput out)
      Construct a Writing POF Handler that will write a POF stream to the passed BufferOutput object.
      Parameters:
      out - the BufferOutput to write to
  • Method Details

    • registerIdentity

      public void registerIdentity(int nId)
      This method is invoked when an identity is encountered in the POF stream. The identity is used to uniquely identify the next value in the POF stream, and can be later referenced by the PofHandler.onIdentityReference(int, int) method.
      Specified by:
      registerIdentity in interface PofHandler
      Parameters:
      nId - if (nId >= 0), then this is the identity encountered in the POF stream, otherwise it is an indicator that the following value could have been assigned an identifier but was not (i.e. that the subsequent value is of a referenceable data type)
    • onNullReference

      public void onNullReference(int iPos)
      Specifies that a null value has been encountered in the POF stream.
      Specified by:
      onNullReference in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
    • onIdentityReference

      public void onIdentityReference(int iPos, int nId)
      Specifies that a reference to a previously-identified value has been encountered in the POF stream.
      Specified by:
      onIdentityReference in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nId - the identity of the previously encountered value, as was specified in a previous call to PofHandler.registerIdentity(int)
    • onInt16

      public void onInt16(int iPos, short n)
      Report that a short integer value has been encountered in the POF stream.
      Specified by:
      onInt16 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      n - the integer value as a short
    • onInt32

      public void onInt32(int iPos, int n)
      Report that an integer value has been encountered in the POF stream.
      Specified by:
      onInt32 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      n - the integer value as an int
    • onInt64

      public void onInt64(int iPos, long n)
      Report that a long integer value has been encountered in the POF stream.
      Specified by:
      onInt64 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      n - the integer value as a long
    • onInt128

      public void onInt128(int iPos, BigInteger n)
      Report that a 128-bit integer value has been encountered in the POF stream.
      Specified by:
      onInt128 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      n - the integer value as a BigInteger
    • onFloat32

      public void onFloat32(int iPos, float fl)
      Report that a base-2 single-precision floating point value has been encountered in the POF stream.
      Specified by:
      onFloat32 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      fl - the floating point value as a float
    • onFloat64

      public void onFloat64(int iPos, double dfl)
      Report that a base-2 double-precision floating point value has been encountered in the POF stream.
      Specified by:
      onFloat64 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      dfl - the floating point value as a double
    • onFloat128

      public void onFloat128(int iPos, RawQuad qfl)
      Report that a base-2 quad-precision floating point value has been encountered in the POF stream.
      Specified by:
      onFloat128 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      qfl - the floating point value as a quad
    • onDecimal32

      public void onDecimal32(int iPos, BigDecimal dec)
      Report that a single-precision decimal value (a base-10 floating point) has been encountered in the POF stream.
      Specified by:
      onDecimal32 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      dec - the decimal value as a BigDecimal
    • onDecimal64

      public void onDecimal64(int iPos, BigDecimal dec)
      Report that a double-precision decimal value (a base-10 floating point) has been encountered in the POF stream.
      Specified by:
      onDecimal64 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      dec - the decimal value as a BigDecimal
    • onDecimal128

      public void onDecimal128(int iPos, BigDecimal dec)
      Report that a quad-precision decimal value (a base-10 floating point) has been encountered in the POF stream.
      Specified by:
      onDecimal128 in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      dec - the decimal value as a BigDecimal
    • onBoolean

      public void onBoolean(int iPos, boolean f)
      Report that a boolean value has been encountered in the POF stream.
      Specified by:
      onBoolean in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      f - the boolean value
    • onOctet

      public void onOctet(int iPos, int b)
      Report that an octet value (a byte) has been encountered in the POF stream.
      Specified by:
      onOctet in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      b - the octet value as an int whose value is in the range 0 to 255 (0x00-0xFF) inclusive
    • onOctetString

      public void onOctetString(int iPos, Binary bin)
      Report that a octet string value has been encountered in the POF stream.
      Specified by:
      onOctetString in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      bin - the octet string value as a Binary object
    • onChar

      public void onChar(int iPos, char ch)
      Report that a character value has been encountered in the POF stream.
      Specified by:
      onChar in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      ch - the character value as a char
    • onCharString

      public void onCharString(int iPos, String s)
      Report that a character string value has been encountered in the POF stream.
      Specified by:
      onCharString in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      s - the character string value as a String object
    • onDate

      public void onDate(int iPos, int nYear, int nMonth, int nDay)
      Report that a date value has been encountered in the POF stream.
      Specified by:
      onDate in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nYear - the year number as defined by ISO8601; note the difference with the Java Date class, whose year is relative to 1900
      nMonth - the month number between 1 and 12 inclusive as defined by ISO8601; note the difference from the Java Date class, whose month value is 0-based (0-11)
      nDay - the day number between 1 and 31 inclusive as defined by ISO8601
    • onYearMonthInterval

      public void onYearMonthInterval(int iPos, int cYears, int cMonths)
      Report that a year-month interval value has been encountered in the POF stream.
      Specified by:
      onYearMonthInterval in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cYears - the number of years in the year-month interval
      cMonths - the number of months in the year-month interval
    • onTime

      public void onTime(int iPos, int nHour, int nMinute, int nSecond, int nNano, boolean fUTC)
      Report that a time value has been encountered in the POF stream.
      Specified by:
      onTime in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nHour - the hour between 0 and 23 inclusive
      nMinute - the minute value between 0 and 59 inclusive
      nSecond - the second value between 0 and 59 inclusive (and theoretically 60 for a leap-second)
      nNano - the nanosecond value between 0 and 999999999 inclusive
      fUTC - true if the time value is UTC or false if the time value does not have an explicit time zone
    • onTime

      public void onTime(int iPos, int nHour, int nMinute, int nSecond, int nNano, int nHourOffset, int nMinuteOffset)
      Report that a time value (with a timezone offset) has been encountered in the POF stream.
      Specified by:
      onTime in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nHour - the hour between 0 and 23 inclusive
      nMinute - the minute value between 0 and 59 inclusive
      nSecond - the second value between 0 and 59 inclusive (and theoretically 60 for a leap-second)
      nNano - the nanosecond value between 0 and 999999999 inclusive
      nHourOffset - the timezone offset in hours from UTC, for example 0 for BST, -5 for EST and 1 for CET
      nMinuteOffset - the timezone offset in minutes, for example 0 (in most cases) or 30
      See Also:
    • onTimeInterval

      public void onTimeInterval(int iPos, int cHours, int cMinutes, int cSeconds, int cNanos)
      Report that a time interval value has been encountered in the POF stream.
      Specified by:
      onTimeInterval in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cHours - the number of hours in the time interval
      cMinutes - the number of minutes in the time interval, from 0 to 59 inclusive
      cSeconds - the number of seconds in the time interval, from 0 to 59 inclusive
      cNanos - the number of nanoseconds, from 0 to 999999999 inclusive
    • onDateTime

      public void onDateTime(int iPos, int nYear, int nMonth, int nDay, int nHour, int nMinute, int nSecond, int nNano, boolean fUTC)
      Report that a date-time value has been encountered in the POF stream.
      Specified by:
      onDateTime in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nYear - the year number as defined by ISO8601; note the difference with the Java Date class, whose year is relative to 1900
      nMonth - the month number between 1 and 12 inclusive as defined by ISO8601; note the difference from the Java Date class, whose month value is 0-based (0-11)
      nDay - the day number between 1 and 31 inclusive as defined by ISO8601
      nHour - the hour between 0 and 23 inclusive
      nMinute - the minute value between 0 and 59 inclusive
      nSecond - the second value between 0 and 59 inclusive (and theoretically 60 for a leap-second)
      nNano - the nanosecond value between 0 and 999999999 inclusive
      fUTC - true if the time value is UTC or false if the time value does not have an explicit time zone
    • onDateTime

      public void onDateTime(int iPos, int nYear, int nMonth, int nDay, int nHour, int nMinute, int nSecond, int nNano, int nHourOffset, int nMinuteOffset)
      Report that a date-time value (with a timezone offset) has been encountered in the POF stream.
      Specified by:
      onDateTime in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nYear - the year number as defined by ISO8601; note the difference with the Java Date class, whose year is relative to 1900
      nMonth - the month number between 1 and 12 inclusive as defined by ISO8601; note the difference from the Java Date class, whose month value is 0-based (0-11)
      nDay - the day number between 1 and 31 inclusive as defined by ISO8601
      nHour - the hour between 0 and 23 inclusive
      nMinute - the minute value between 0 and 59 inclusive
      nSecond - the second value between 0 and 59 inclusive (and theoretically 60 for a leap-second)
      nNano - the nanosecond value between 0 and 999999999 inclusive
      nHourOffset - the timezone offset in hours from UTC, for example 0 for BST, -5 for EST and 1 for CET
      nMinuteOffset - the timezone offset in minutes, for example 0 (in most cases) or 30
    • onDayTimeInterval

      public void onDayTimeInterval(int iPos, int cDays, int cHours, int cMinutes, int cSeconds, int cNanos)
      Report that a day-time interval value has been encountered in the POF stream.
      Specified by:
      onDayTimeInterval in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cDays - the number of days in the day-time interval
      cHours - the number of hours in the day-time interval, from 0 to 23 inclusive
      cMinutes - the number of minutes in the day-time interval, from 0 to 59 inclusive
      cSeconds - the number of seconds in the day-time interval, from 0 to 59 inclusive
      cNanos - the number of nanoseconds in the day-time interval, from 0 to 999999999 inclusive
    • beginCollection

      public void beginCollection(int iPos, int cElements)
      Report that a collection of values has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for each of the cElements elements in the collection, and the collection extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginCollection in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of values (elements) in the collection
    • beginUniformCollection

      public void beginUniformCollection(int iPos, int cElements, int nType)
      Report that a uniform collection of values has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for each of the cElements elements in the collection, and the collection extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginUniformCollection in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of values (elements) in the collection
      nType - the type identifier for all of the values in the uniform collection
    • beginArray

      public void beginArray(int iPos, int cElements)
      Report that an array of values has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for each of the cElements elements in the array, and the array extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginArray in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of values (elements) in the array
    • beginUniformArray

      public void beginUniformArray(int iPos, int cElements, int nType)
      Report that a uniform array of values has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for each of the cElements elements in the array, and the array extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginUniformArray in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of values (elements) in the array
      nType - the type identifier for all of the values in the uniform array
    • beginSparseArray

      public void beginSparseArray(int iPos, int cElements)
      Report that a sparse array of values has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for present element in the sparse array (up to cElements elements), and the array extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginSparseArray in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of elements in the array, which is greater than or equal to the number of values in the sparse POF stream; in other words, the number of values that will subsequently be reported will not exceed this number
    • beginUniformSparseArray

      public void beginUniformSparseArray(int iPos, int cElements, int nType)
      Report that a uniform sparse array of values has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for present element in the sparse array (up to cElements elements), and the array extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginUniformSparseArray in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of elements in the array, which is greater than or equal to the number of values in the sparse POF stream; in other words, the number of values that will subsequently be reported will not exceed this number
      nType - the type identifier for all of the values in the uniform sparse array
    • beginMap

      public void beginMap(int iPos, int cElements)
      Report that a map of key/value pairs has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for each of the cElements elements in the map, and the map extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginMap in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of key/value pairs (entries) in the map
    • beginUniformKeysMap

      public void beginUniformKeysMap(int iPos, int cElements, int nTypeKeys)
      Report that a map of key/value pairs (with the keys being of a uniform type) has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for each of the cElements elements in the map, and the map extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginUniformKeysMap in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of key/value pairs (entries) in the map
      nTypeKeys - the type identifier for all of the keys in the uniform-keys map
    • beginUniformMap

      public void beginUniformMap(int iPos, int cElements, int nTypeKeys, int nTypeValues)
      Report that a map of key/value pairs (with the keys being of a uniform type and the values being of a uniform type) has been encountered in the POF stream.

      This method call will be followed by a separate call to an "on" or "begin" method for each of the cElements elements in the map, and the map extent will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginUniformMap in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      cElements - the exact number of key/value pairs (entries) in the map
      nTypeKeys - the type identifier for all of the keys in the uniform map
      nTypeValues - the type identifier for all of the values in the uniform map
    • beginUserType

      public void beginUserType(int iPos, int nUserTypeId, int nVersionId)
      Report that a value of a "user type" has been encountered in the POF stream. A user type is analogous to a "class", and a value of a user type is analogous to an "object".

      This method call will be followed by a separate call to an "on" or "begin" method for each of the property values in the user type, and the user type will then be terminated by a call to PofHandler.endComplexValue().

      Specified by:
      beginUserType in interface PofHandler
      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nUserTypeId - the user type identifier, (nUserTypeId >= 0)
      nVersionId - the version identifier for the user data type data in the POF stream, (nVersionId >= 0)
    • beginUserType

      public void beginUserType(int iPos, int nId, int nUserTypeId, int nVersionId)
      Report that a value of a "user type" has been encountered in the POF stream. A user type is analogous to a "class", and a value of a user type is analogous to an "object".

      This method call will be followed by a separate call to an "on" or "begin" method for each of the property values in the user type, and the user type will then be terminated by a call to endComplexValue().

      Parameters:
      iPos - context-sensitive position information: property index within a user type, array index within an array, element counter within a collection, entry counter within a map, -1 otherwise
      nId - identity of the object to encode, or -1 if identity shouldn't be encoded in the POF stream
      nUserTypeId - the user type identifier, (nUserTypeId >= 0)
      nVersionId - the version identifier for the user data type data in the POF stream, (nVersionId >= 0)
    • endComplexValue

      public void endComplexValue()
      Signifies the termination of the current complex value. Complex values are any of the collection, array, map and user types. For each call to one of the "begin" methods, there will be a corresponding call to this method, even if there were no contents in the complex value.
      Specified by:
      endComplexValue in interface PofHandler
    • getBufferOutput

      public WriteBuffer.BufferOutput getBufferOutput()
      Obtain the DataOutput object that this Writing POF Handler is writing to.
      Returns:
      the DataOutput object that this POF handler is writing to
    • getComplex

      protected WritingPofHandler.Complex getComplex()
      Obtain the current Complex object that represents the complex type that is being written to the POF stream.
      Returns:
      the current Complex object
    • isSkippable

      protected boolean isSkippable()
      Determine if the value encoding can be skipped. A value can be skipped if it is a default value and if it does not have an identity and if it is in a sparse data structure.
      Returns:
      true iff value encoding of default values can be skipped altogether
    • isCompressable

      protected boolean isCompressable()
      Determine if the value encoding can be compressed by combining type and value information in such a way that type information could be lost.
      Returns:
      true iff values can be encoded without type information
    • encodePosition

      protected void encodePosition(int iPos)
      Called for each and every value going into the POF stream, in case the value needs its position to be encoded into the stream.
      Parameters:
      iPos - the position (property index, array index, etc.)
    • isTypeIdEncoded

      protected boolean isTypeIdEncoded(int nTypeId)
      Determine if the type should be encoded for the current value.
      Parameters:
      nTypeId - the type of the current value
      Returns:
      true if the type ID should be placed into the POF stream, and false if only the value itself should be placed into the stream