Documentation ¶
Overview ¶
Package serialization serializes user objects to Data and back to Object. Data is the internal representation of binary data in Hazelcast.
Index ¶
- type ClassDefinition
- func (cd *ClassDefinition) AddBoolArrayField(fieldName string) error
- func (cd *ClassDefinition) AddBoolField(fieldName string) error
- func (cd *ClassDefinition) AddByteArrayField(fieldName string) error
- func (cd *ClassDefinition) AddByteField(fieldName string) error
- func (cd *ClassDefinition) AddField(definition FieldDefinition) error
- func (cd *ClassDefinition) AddFloat32ArrayField(fieldName string) error
- func (cd *ClassDefinition) AddFloat32Field(fieldName string) error
- func (cd *ClassDefinition) AddFloat64ArrayField(fieldName string) error
- func (cd *ClassDefinition) AddFloat64Field(fieldName string) error
- func (cd *ClassDefinition) AddInt16ArrayField(fieldName string) error
- func (cd *ClassDefinition) AddInt16Field(fieldName string) error
- func (cd *ClassDefinition) AddInt32ArrayField(fieldName string) error
- func (cd *ClassDefinition) AddInt32Field(fieldName string) error
- func (cd *ClassDefinition) AddInt64ArrayField(fieldName string) error
- func (cd *ClassDefinition) AddInt64Field(fieldName string) error
- func (cd *ClassDefinition) AddPortableArrayField(fieldName string, def *ClassDefinition) error
- func (cd *ClassDefinition) AddPortableField(fieldName string, def *ClassDefinition) error
- func (cd *ClassDefinition) AddStringArrayField(fieldName string) error
- func (cd *ClassDefinition) AddStringField(fieldName string) error
- func (cd *ClassDefinition) AddUInt16ArrayField(fieldName string) error
- func (cd *ClassDefinition) AddUInt16Field(fieldName string) error
- type Config
- func (b *Config) AddClassDefinition(definition *ClassDefinition)
- func (b *Config) AddCustomSerializer(t reflect.Type, serializer Serializer) error
- func (b *Config) AddIdentifiedDataSerializableFactory(factory IdentifiedDataSerializableFactory)
- func (b *Config) AddPortableFactory(factory PortableFactory)
- func (c Config) Clone() Config
- func (c Config) Validate() error
- type DataInput
- type DataOutput
- type FieldDefinition
- type FieldDefinitionType
- type IdentifiedDataSerializable
- type IdentifiedDataSerializableFactory
- type JSON
- type Portable
- type PortableFactory
- type PortableReader
- type PortableWriter
- type Serializer
- type VersionedPortable
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClassDefinition ¶
type ClassDefinition struct { Fields map[string]FieldDefinition FactoryID int32 ClassID int32 Version int32 }
ClassDefinition defines a class schema for Portable structs.
func NewClassDefinition ¶ added in v1.0.0
func NewClassDefinition(factoryID int32, classID int32, version int32) *ClassDefinition
func (*ClassDefinition) AddBoolArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddBoolArrayField(fieldName string) error
func (*ClassDefinition) AddBoolField ¶ added in v1.0.0
func (cd *ClassDefinition) AddBoolField(fieldName string) error
func (*ClassDefinition) AddByteArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddByteArrayField(fieldName string) error
func (*ClassDefinition) AddByteField ¶ added in v1.0.0
func (cd *ClassDefinition) AddByteField(fieldName string) error
func (*ClassDefinition) AddField ¶ added in v1.0.0
func (cd *ClassDefinition) AddField(definition FieldDefinition) error
func (*ClassDefinition) AddFloat32ArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddFloat32ArrayField(fieldName string) error
func (*ClassDefinition) AddFloat32Field ¶ added in v1.0.0
func (cd *ClassDefinition) AddFloat32Field(fieldName string) error
func (*ClassDefinition) AddFloat64ArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddFloat64ArrayField(fieldName string) error
func (*ClassDefinition) AddFloat64Field ¶ added in v1.0.0
func (cd *ClassDefinition) AddFloat64Field(fieldName string) error
func (*ClassDefinition) AddInt16ArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddInt16ArrayField(fieldName string) error
func (*ClassDefinition) AddInt16Field ¶ added in v1.0.0
func (cd *ClassDefinition) AddInt16Field(fieldName string) error
func (*ClassDefinition) AddInt32ArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddInt32ArrayField(fieldName string) error
func (*ClassDefinition) AddInt32Field ¶ added in v1.0.0
func (cd *ClassDefinition) AddInt32Field(fieldName string) error
func (*ClassDefinition) AddInt64ArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddInt64ArrayField(fieldName string) error
func (*ClassDefinition) AddInt64Field ¶ added in v1.0.0
func (cd *ClassDefinition) AddInt64Field(fieldName string) error
func (*ClassDefinition) AddPortableArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddPortableArrayField(fieldName string, def *ClassDefinition) error
func (*ClassDefinition) AddPortableField ¶ added in v1.0.0
func (cd *ClassDefinition) AddPortableField(fieldName string, def *ClassDefinition) error
func (*ClassDefinition) AddStringArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddStringArrayField(fieldName string) error
func (*ClassDefinition) AddStringField ¶ added in v1.0.0
func (cd *ClassDefinition) AddStringField(fieldName string) error
func (*ClassDefinition) AddUInt16ArrayField ¶ added in v1.0.0
func (cd *ClassDefinition) AddUInt16ArrayField(fieldName string) error
func (*ClassDefinition) AddUInt16Field ¶ added in v1.0.0
func (cd *ClassDefinition) AddUInt16Field(fieldName string) error
type Config ¶
type Config struct { // GlobalSerializer is the serializer that will be used if no other serializer is applicable. GlobalSerializer Serializer // CustomSerializers is a map of object types and corresponding custom serializers. CustomSerializers map[reflect.Type]Serializer // IdentifiedDataSerializableFactories is a map of factory IDs and corresponding IdentifiedDataSerializable factories. IdentifiedDataSerializableFactories []IdentifiedDataSerializableFactory // PortableFactories is a map of factory IDs and corresponding Portable factories. PortableFactories []PortableFactory // ClassDefinitions contains ClassDefinitions for portable structs. ClassDefinitions []*ClassDefinition PortableVersion int32 // PortableVersion will be used to differentiate two versions of the same struct that have changes on the struct, // like adding/removing a field or changing a type of a field. // BigEndian is the Little Endinan byte order bool. If false, it is Big Endian. BigEndian bool }
Config contains the serialization configuration of a Hazelcast instance.
func (*Config) AddClassDefinition ¶
func (b *Config) AddClassDefinition(definition *ClassDefinition)
func (*Config) AddCustomSerializer ¶
func (b *Config) AddCustomSerializer(t reflect.Type, serializer Serializer) error
AddCustomSerializer adds a customer serializer for the given type.
func (*Config) AddIdentifiedDataSerializableFactory ¶
func (b *Config) AddIdentifiedDataSerializableFactory(factory IdentifiedDataSerializableFactory)
AddIdentifiedDataSerializableFactory adds an identified data serializable factory.
func (*Config) AddPortableFactory ¶
func (b *Config) AddPortableFactory(factory PortableFactory)
AddPortableFactory adds a portable factory.
type DataInput ¶
type DataInput interface { // Position returns the head position in the byte array. Position() int32 // SetPosition sets the head position in the byte array. SetPosition(pos int32) // ReadByte returns byte read . // It returns zero if an error is set previously. ReadByte() byte // ReadBool returns bool read. // It returns false if an error is set previously. ReadBool() bool // ReadUInt16 returns uint16 read. // It returns zero if an error is set previously. ReadUInt16() uint16 // ReadInt16 returns int16 read. // It returns zero if an error is set previously. ReadInt16() int16 // ReadInt32 returns int32 read. // It returns zero if an error is set previously. ReadInt32() int32 // ReadInt64 returns int64 read. // It returns zero if an error is set previously. ReadInt64() int64 // ReadFloat32 returns float32 read. // It returns zero if an error is set previously. ReadFloat32() float32 // ReadFloat64 returns float64 read. // It returns zero if an error is set previously. ReadFloat64() float64 // ReadString returns string read. // It returns empty string if an error is set previously. ReadString() string // ReadObject returns object read. // It returns nil if an error is set previously. ReadObject() interface{} // ReadByteArray returns []byte read. // It returns nil if an error is set previously. ReadByteArray() []byte // ReadBoolArray returns []bool read. // It returns nil if an error is set previously. ReadBoolArray() []bool // ReadUInt16Array returns []uint16 read. // It returns nil if an error is set previously. ReadUInt16Array() []uint16 // ReadInt16Array returns []int16 read. // It returns nil if an error is set previously. ReadInt16Array() []int16 // ReadInt32Array returns []int32 read. // It returns nil if an error is set previously. ReadInt32Array() []int32 // ReadInt64Array returns []int64 read. // It returns nil if an error is set previously. ReadInt64Array() []int64 // ReadFloat32Array returns []float32 read. // It returns nil if an error is set previously. ReadFloat32Array() []float32 // ReadFloat64Array returns []float64 read. // It returns nil if an error is set previously. ReadFloat64Array() []float64 // ReadStringArray returns []string read. // It returns nil if an error is set previously. ReadStringArray() []string }
DataInput provides deserialization methods. If any of the methods results in an error, all following methods will return the zero value for that type immediately. Example usage:
field1 = input.ReadString() field2 = input.ReadString() return input.Error()
type DataOutput ¶
type DataOutput interface { // Position returns the head position in the byte array. Position() int32 // SetPosition sets the head position in the byte array. SetPosition(pos int32) // WriteByte writes a byte. WriteByte(v byte) // WriteBool writes a bool. WriteBool(v bool) // WriteUInt16 writes an uint16. WriteUInt16(v uint16) // WriteInt16 writes an int16. WriteInt16(v int16) // WriteInt32 writes an int32. WriteInt32(v int32) // WriteInt64 writes an int64. WriteInt64(v int64) // WriteFloat32 writes a float32. WriteFloat32(v float32) // WriteFloat64 writes a float64. WriteFloat64(v float64) // WriteString writes a string in UTF-8 format. WriteString(v string) // WriteObject writes an object. WriteObject(i interface{}) // WriteByteArray writes a []byte. WriteByteArray(v []byte) // WriteBoolArray writes a []bool. WriteBoolArray(v []bool) // WriteUInt16Array writes an []uint16. WriteUInt16Array(v []uint16) // WriteInt16Array writes an []int16. WriteInt16Array(v []int16) // WriteInt32Array writes an []int32. WriteInt32Array(v []int32) // WriteInt64Array writes an []int64. WriteInt64Array(v []int64) // WriteFloat32Array writes a []float32. WriteFloat32Array(v []float32) // WriteFloat64Array writes a []float64. WriteFloat64Array(v []float64) // WriteStringArray writes a []string in UTF-8 format. WriteStringArray(v []string) // WriteBytes writes a string's characters. WriteBytes(bytes string) // WriteZeroBytes writes zero bytes as given length. WriteZeroBytes(count int) }
DataOutput provides serialization methods.
type FieldDefinition ¶
type FieldDefinition struct { Name string Index int32 Type FieldDefinitionType FactoryID int32 ClassID int32 Version int32 }
FieldDefinition defines name, type, index of a field.
type FieldDefinitionType ¶ added in v1.0.0
type FieldDefinitionType int32
const ( TypePortable FieldDefinitionType = iota TypeByte TypeBool TypeUint16 TypeInt16 TypeInt32 TypeInt64 TypeFloat32 TypeFloat64 TypeString TypePortableArray TypeByteArray TypeBoolArray TypeUInt16Array TypeInt16Array TypeInt32Array TypeInt64Array TypeFloat32Array TypeFloat64Array TypeStringArray )
type IdentifiedDataSerializable ¶
type IdentifiedDataSerializable interface { // FactoryID returns IdentifiedDataSerializableFactory factory ID for this struct. FactoryID() (factoryID int32) // ClassID returns type identifier for this struct. It should be unique per IdentifiedDataSerializableFactory. ClassID() (classID int32) // WriteData writes object fields to output stream. WriteData(output DataOutput) // ReadData reads fields from the input stream. ReadData(input DataInput) }
IdentifiedDataSerializable is a serialization method as an alternative to standard Gob serialization. Each IdentifiedDataSerializable is created by a registered IdentifiedDataSerializableFactory.
type IdentifiedDataSerializableFactory ¶
type IdentifiedDataSerializableFactory interface { // Creates an IdentifiedDataSerializable instance using given type ID. Create(id int32) (instance IdentifiedDataSerializable) // FactoryID returns the factory ID. FactoryID() int32 }
IdentifiedDataSerializableFactory is used to create IdentifiedDataSerializable instances during deserialization.
type Portable ¶
type Portable interface { // FactoryID returns PortableFactory ID for this portable struct. FactoryID() (factoryID int32) // ClassID returns type identifier for this portable struct. Class ID should be unique per PortableFactory. ClassID() (classID int32) // WritePortable serializes this portable object using PortableWriter. WritePortable(writer PortableWriter) // ReadPortable reads portable fields using PortableReader. ReadPortable(reader PortableReader) }
Portable provides an alternative serialization method. Instead of relying on reflection, each Portable is created by a registered PortableFactory. Portable serialization has the following advantages: * Supporting multiversion of the same object type. * Fetching individual fields without having to rely on reflection. * Querying and indexing support without deserialization and/or reflection.
type PortableFactory ¶
type PortableFactory interface { // Create creates a Portable instance using given class ID and // returns portable instance or nil if class ID is not known by this factory. Create(classID int32) (instance Portable) // FactoryID returns the factory ID. FactoryID() int32 }
PortableFactory is used to create Portable instances during deserialization.
type PortableReader ¶
type PortableReader interface { // ReadByte takes fieldName Name of the field and returns the byte value read. // It returns zero if an error is set previously. ReadByte(fieldName string) byte // ReadBool takes fieldName Name of the field and returns the bool value read. // It returns false if an error is set previously. ReadBool(fieldName string) bool // ReadUInt16 takes fieldName Name of the field and returns the uint16 value read. // It returns zero if an error is set previously. ReadUInt16(fieldName string) uint16 // ReadInt16 takes fieldName Name of the field and returns the int16 value read. // It returns zero if an error is set previously. ReadInt16(fieldName string) int16 // ReadInt32 takes fieldName Name of the field and returns the int32 value read. // It returns zero if an error is set previously. ReadInt32(fieldName string) int32 // ReadInt64 takes fieldName Name of the field and returns the int64 value read. // It returns zero if an error is set previously. ReadInt64(fieldName string) int64 // ReadFloat32 takes fieldName Name of the field and returns the float32 value read. // It returns zero if an error is set previously. ReadFloat32(fieldName string) float32 // ReadFloat64 takes fieldName Name of the field and returns the float64 value read. // It returns zero if an error is set previously. ReadFloat64(fieldName string) float64 // ReadString takes fieldName Name of the field and returns the string value read. // It returns empty string if an error is set previously. ReadString(fieldName string) string // ReadPortable takes fieldName Name of the field and returns the Portable value read. // It returns nil if an error is set previously. ReadPortable(fieldName string) Portable // ReadByteArray takes fieldName Name of the field and returns the []byte value read. // It returns nil if an error is set previously. ReadByteArray(fieldName string) []byte // ReadBoolArray takes fieldName Name of the field and returns the []bool value read. // It returns nil if an error is set previously. ReadBoolArray(fieldName string) []bool // ReadUInt16Array takes fieldName Name of the field and returns the []uint16 value read. // It returns nil if an error is set previously. ReadUInt16Array(fieldName string) []uint16 // ReadInt16Array takes fieldName Name of the field and returns the []int16 value read. // It returns nil if an error is set previously. ReadInt16Array(fieldName string) []int16 // ReadInt32Array takes fieldName Name of the field and returns the []int32 value read. // It returns nil if an error is set previously. ReadInt32Array(fieldName string) []int32 // ReadInt64Array takes fieldName Name of the field and returns the []int64 value read. // It returns nil if an error is set previously. ReadInt64Array(fieldName string) []int64 // ReadFloat32Array takes fieldName Name of the field and returns the []float32 value read. // It returns nil if an error is set previously. ReadFloat32Array(fieldName string) []float32 // ReadFloat64Array takes fieldName Name of the field and returns the []float64 value read. // It returns nil if an error is set previously. ReadFloat64Array(fieldName string) []float64 // ReadStringArray takes fieldName Name of the field and returns the []string value read. // It returns nil if an error is set previously. ReadStringArray(fieldName string) []string // ReadPortableArray takes fieldName Name of the field and returns the []Portable value read. // It returns nil if an error is set previously. ReadPortableArray(fieldName string) []Portable }
PortableReader provides a mean of reading portable fields from a binary in form of go primitives arrays of go primitives, nested portable fields and array of portable fields. Example usage:
s.id = reader.ReadInt16("id") s.age = reader.ReadInt32("age") return reader.Error()
type PortableWriter ¶
type PortableWriter interface { // WriteByte writes a byte with fieldName. WriteByte(fieldName string, value byte) // WriteBool writes a bool with fieldName. WriteBool(fieldName string, value bool) // WriteUInt16 writes a uint16 with fieldName. WriteUInt16(fieldName string, value uint16) // WriteInt16 writes a int16 with fieldName. WriteInt16(fieldName string, value int16) // WriteInt32 writes a int32 with fieldName. WriteInt32(fieldName string, value int32) // WriteInt64 writes a int64 with fieldName. WriteInt64(fieldName string, value int64) // WriteFloat32 writes a float32 with fieldName. WriteFloat32(fieldName string, value float32) // WriteFloat64 writes a float64 with fieldName. WriteFloat64(fieldName string, value float64) // WriteString writes a string in UTF-8 format with fieldName. WriteString(fieldName string, value string) // WritePortable writes a Portable with fieldName. WritePortable(fieldName string, value Portable) // WriteNilPortable writes a NilPortable with fieldName, factoryID and classID. WriteNilPortable(fieldName string, factoryID int32, classID int32) // WriteByteArray writes a []byte with fieldName. WriteByteArray(fieldName string, value []byte) // WriteBoolArray writes a []bool with fieldName. WriteBoolArray(fieldName string, value []bool) // WriteUInt16Array writes a []uint16 with fieldName. WriteUInt16Array(fieldName string, value []uint16) // WriteInt16Array writes a []int16 with fieldName. WriteInt16Array(fieldName string, value []int16) // WriteInt32Array writes a []int32 with fieldName. WriteInt32Array(fieldName string, value []int32) // WriteInt64Array writes a []int64 with fieldName. WriteInt64Array(fieldName string, value []int64) // WriteFloat32Array writes a []float32 with fieldName. WriteFloat32Array(fieldName string, value []float32) // WriteFloat64Array writes a []float64 with fieldName. WriteFloat64Array(fieldName string, value []float64) // WriteStringArray writes a []string in UTF-8 format with fieldName. WriteStringArray(fieldName string, value []string) // WritePortableArray writes a []Portable with fieldName. WritePortableArray(fieldName string, value []Portable) }
PortableWriter provides a mean of writing portable fields to a binary in form of go primitives arrays of go primitives, nested portable fields and array of portable fields.
type Serializer ¶
type Serializer interface { // ID returns id of serializer. ID() (id int32) // Read reads an object from ObjectDataInput. Read(input DataInput) interface{} // Write writes an object to ObjectDataOutput. Write(output DataOutput, object interface{}) }
Serializer is base interface of serializers.
type VersionedPortable ¶
type VersionedPortable interface { Portable // Version returns version for this Portable struct. Version() (version int32) }
VersionedPortable is an extension to Portable to support per class version instead of a global serialization version.