Class: Whoosh::Serialization::Protobuf
- Inherits:
-
Object
- Object
- Whoosh::Serialization::Protobuf
- Defined in:
- lib/whoosh/serialization/protobuf.rb
Class Method Summary collapse
- .available? ⇒ Boolean
- .content_type ⇒ Object
- .decode(raw, message_class: nil) ⇒ Object
- .encode(data, message_class: nil) ⇒ Object
- .ensure_available! ⇒ Object
Class Method Details
.available? ⇒ Boolean
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/whoosh/serialization/protobuf.rb', line 8 def self.available? if @available.nil? @available = begin require "google/protobuf" true rescue LoadError false end end @available end |
.content_type ⇒ Object
20 21 22 |
# File 'lib/whoosh/serialization/protobuf.rb', line 20 def self.content_type "application/protobuf" end |
.decode(raw, message_class: nil) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/whoosh/serialization/protobuf.rb', line 31 def self.decode(raw, message_class: nil) return nil if raw.nil? || raw.empty? ensure_available! raise Errors::DependencyError, "Protobuf decoding requires a message_class" unless .decode(raw) end |
.encode(data, message_class: nil) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/whoosh/serialization/protobuf.rb', line 24 def self.encode(data, message_class: nil) ensure_available! raise Errors::DependencyError, "Protobuf encoding requires a message_class" unless msg = .new(data) .encode(msg) end |
.ensure_available! ⇒ Object
38 39 40 |
# File 'lib/whoosh/serialization/protobuf.rb', line 38 def self.ensure_available! raise Errors::DependencyError, "Protobuf requires the 'google-protobuf' gem" unless available? end |