Class: RightScale::Serializer

Inherits:
Object
  • Object
show all
Defined in:
lib/right_agent/serialize/serializer.rb

Overview

Cascade serializer supporting MessagePack and JSON serialization formats as well as secure serialization

Defined Under Namespace

Classes: SerializationError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(preferred_format = nil) ⇒ Serializer

Initialize the serializer Do not cascade serializers if :secure is specified

Parameters

preferred_format(Symbol|String)

Preferred serialization format: :msgpack, :json, or :secure

Raises

ArgumentError

If preferred format is not supported

Raises:

  • (ArgumentError)


69
70
71
72
73
# File 'lib/right_agent/serialize/serializer.rb', line 69

def initialize(preferred_format = nil)
  @format = (preferred_format ||= DEFAULT_FORMAT).to_sym
  raise ArgumentError, "Serializer format #{@format.inspect} not one of #{FORMATS.inspect}" unless FORMATS.include?(@format)
  @secure = (@format == :secure)
end

Instance Attribute Details

#formatObject (readonly)

(Symbol) Preferred serialization format



59
60
61
# File 'lib/right_agent/serialize/serializer.rb', line 59

def format
  @format
end

Instance Method Details

#dump(packet, format = nil) ⇒ Object

Serialize object using preferred serializer Do not cascade

Parameters

packet(Object)

Object to be serialized

format(Symbol)

Override preferred format

Return

(String)

Serialized object



84
85
86
# File 'lib/right_agent/serialize/serializer.rb', line 84

def dump(packet, format = nil)
  cascade_serializers(:dump, packet, [@secure ? SecureSerializer : SERIALIZERS[format || @format]])
end

#load(packet) ⇒ Object

Unserialize object using cascaded serializers with order chosen by peaking at first byte

Parameters

packet(String)

Data representing serialized object

Return

(Object)

Unserialized object



95
96
97
# File 'lib/right_agent/serialize/serializer.rb', line 95

def load(packet)
  cascade_serializers(:load, packet, @secure ? [SecureSerializer] : order_serializers(packet))
end