Module: Tarantool::Serializers

Extended by:
Serializers
Included in:
Request, Response, Serializers
Defined in:
lib/tarantool/serializers.rb,
lib/tarantool/serializers/bson.rb,
lib/tarantool/serializers/ber_array.rb

Defined Under Namespace

Classes: BSON, BerArray

Constant Summary collapse

MAP =
{}

Instance Method Summary collapse

Instance Method Details

#check_type(type) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/tarantool/serializers.rb', line 5

def check_type(type)
  type = type.to_sym  if String === type
  return :varint  if Integer == type
  return :string  if String  == type

  case type
  when :int, :integer, :int32, :integer32
    :int
  when :int64, :integer64
    :int64
  when :int16, :integer16
    :int16
  when :int8, :integer8
    :int8
  when :sint, :sinteger, :sint32, :sinteger32
    :sint
  when :sint16, :sinteger16
    :sint16
  when :sint64, :sinteger64
    :sint64
  when :sint8, :sinteger8
    :sint8
  when :varint
    :varint
  when :str, :string
    :string
  when :bytes, :auto
    type
  when Symbol
    unless MAP.include?(type)
      raise ArgumentError, "Unknown type name #{type.inspect}"
    end
    type
  else
    unless type.respond_to?(:encode) && type.respond_to?(:decode)
      raise ArgumentError, "Wrong serializer object #{type.inspect} (must respond to #encode and #decode)"
    end
    type
  end
end

#get_serializer(type) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/tarantool/serializers.rb', line 46

def get_serializer(type)
  if Symbol === type
    MAP.fetch(type){ raise ArgumentError, "Unknown type name #{type.inspect}" }
  elsif type.respond_to?(:encode) && type.respond_to?(:decode)
    type
  else
    raise ArgumentError, "Wrong serializer object #{type.inspect} (must respond to #encode and #decode)"
  end
end