Module: Stargate::Codec

Defined in:
lib/stargate/codec.rb,
lib/stargate/codec/json.rb,
lib/stargate/codec/bencode.rb,
lib/stargate/codec/message_pack.rb

Defined Under Namespace

Classes: BEncode, JSON, MessagePack

Constant Summary collapse

Error =

Public: Base codec error.

Class.new(::Stargate::Error)
UndefinedCodecError =

Public: Raised when given codec is not registered.

Class.new(Error)
DecodeError =

Public: Raised when codec cannot decode given data string.

Class.new(Error)
@@codecs =
{}

Class Method Summary collapse

Class Method Details

.[](content_type) ⇒ Object



26
27
28
# File 'lib/stargate/codec.rb', line 26

def self.[](content_type)
  codecs[content_type.to_s] or raise UndefinedCodecError, "No codec for type: #{content_type}"
end

.codecsObject



14
15
16
# File 'lib/stargate/codec.rb', line 14

def self.codecs
  @@codecs
end

.find_by_id(id) ⇒ Object



22
23
24
# File 'lib/stargate/codec.rb', line 22

def self.find_by_id(id)
  codecs.values.find { |codec| codec.id == id.to_sym } or raise UndefinedCodecError, "No such codec: #{id}"
end

.register(codec) ⇒ Object



18
19
20
# File 'lib/stargate/codec.rb', line 18

def self.register(codec)
  codecs[codec.content_type.to_s] = codec
end