4
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
45
|
# File 'lib/protobuf/rpc/serializer.rb', line 4
def self.dump(msg, serializer:)
return msg if msg.is_a?(::Protobuf::Rpc::Messages::RpcCompressedMessage)
dumped_message = ::Protobuf::Rpc::Messages::RpcCompressedMessage.new(compressed: false)
case msg
when ::Protobuf::Message
proto(dumped_message, msg)
when StandardError
error = ::Protobuf::Rpc::Messages::Error.new(error_class: msg.class.name,
error_message: msg.message,
error_backtrace: msg.backtrace)
proto(dumped_message, error)
else
case serializer.to_s.upcase.to_sym
when :MSGPACK
msgpack(dumped_message, msg)
when :OJ
oj(dumped_message, msg)
when :MULTI_JSON
multi_json(dumped_message, msg)
when :JSON
json(dumped_message, msg)
when :YAML
yaml(dumped_message, msg)
when :MARSHAL
marshal(dumped_message, msg)
else
raw(dumped_message, msg)
end
end
if dumped_message.response_body.size > 16384
dumped_message.compressed = true if msg.is_a?(String)
dumped_message.response_body = ActiveSupport::Gzip.compress(dumped_message.response_body) if dumped_message.compressed
else
dumped_message.compressed = false
end
dumped_message
end
|