Module: Fix::Protocol::MessageClassMapping

Defined in:
lib/fix/protocol/message_class_mapping.rb

Overview

Maps the FIX message type codes to message classes

Constant Summary collapse

MAPPING =

The actual code <-> class mapping

{
  '0' => :heartbeat,
  'A' => :logon,
  '1' => :test_request,
  '2' => :resend_request,
  '3' => :reject,
  '5' => :logout,
  'V' => :market_data_request
}

Class Method Summary collapse

Class Method Details

.camelcase(s) ⇒ Symbol

Formats a symbol as a proper class name

Parameters:

  • s (Symbol)

    A name to camelcase

Returns:

  • (Symbol)

    A camelcased class name



49
50
51
# File 'lib/fix/protocol/message_class_mapping.rb', line 49

def self.camelcase(s)
  s.to_s.split(' ').map { |str| str.split('_') }.flatten.map(&:capitalize).join.to_sym
end

.get(msg_type) ⇒ Class

Returns the message class associated to a message code

Parameters:

  • msg_type (Integer)

    The FIX message type code

Returns:

  • (Class)

    The FIX message class



28
29
30
# File 'lib/fix/protocol/message_class_mapping.rb', line 28

def self.get(msg_type)
  Messages.const_get(camelcase(MAPPING[msg_type])) if MAPPING.has_key?(msg_type)
end

.reverse_get(klass) ⇒ Integer

Returns the message code associated to a message class

Parameters:

  • klass (Class)

    The FIX message class

Returns:

  • (Integer)

    The FIX message type code



38
39
40
41
# File 'lib/fix/protocol/message_class_mapping.rb', line 38

def self.reverse_get(klass)
  key = klass.name.split('::').last.gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase.to_sym
  MAPPING.find { |p| p[1] == key }[0]
end