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)


80
81
82
83
84
# File 'lib/right_agent/serialize/serializer.rb', line 80

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



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

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



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

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

#load(packet, id = nil) ⇒ Object

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

Parameters

packet(String)

Data representing serialized object

id(String|nil)

Optional identifier of source of data for use

in determining who is the receiver

Return

(Object)

Unserialized object



108
109
110
# File 'lib/right_agent/serialize/serializer.rb', line 108

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