Module: ImageFilterDsl::Serializers::MsgPack

Extended by:
MsgPack
Includes:
Common
Included in:
MsgPack
Defined in:
lib/image_filter_dsl/serializers/msg_pack.rb

Overview

Provides serialization/deserialization to/from MessagePack strings using intermediate serializer

Constant Summary collapse

HEADER =

‘Header’ added to start of array packed with MsgPack

['mp',ImageFilterDsl::Binary::Struct::HEADER_VALUES.values].flatten

Instance Method Summary collapse

Methods included from Common

#fix_hash, #normalize_sym

Instance Method Details

#deserialize(data) ⇒ Hash

Deserialize MessagePack kernel to intermediate format

Parameters:

  • data (String)

    MessagePack kernel data

Returns:

  • (Hash)

    Intermediate format of kernel data



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/image_filter_dsl/serializers/msg_pack.rb', line 35

def deserialize(data)
    data = MessagePack.unpack(data)
    head,inps,outs,ins=data
    d = {
        inputs: normalize_sym(inps),
        outputs: normalize_sym(outs),
        instructions: ins.map do |i|
            op,iin,iout=i
            fix_hash({op: op, in: iin, out: iout})
        end
    }
    
    return d
end

#serialize(kernel) ⇒ String

Serialize kernel to MessagePack string

Parameters:

  • kernel (Hash)

    Kernel in intermediate format

Returns:

  • (String)

    MessagePack serialized version of kernel



21
22
23
24
25
26
27
28
29
30
# File 'lib/image_filter_dsl/serializers/msg_pack.rb', line 21

def serialize(kernel)
    [
        HEADER,
        kernel[:inputs],
        kernel[:outputs],
        kernel[:instructions].map do |i|
            [i[:op],i[:in],i[:out]]
        end
    ].to_msgpack
end