Class: Fix::Protocol::Message
- Inherits:
-
MessagePart
- Object
- MessagePart
- Fix::Protocol::Message
- Defined in:
- lib/fix/protocol/message.rb
Overview
Represents an instance of a FIX message
Direct Known Subclasses
Fix::Protocol::Messages::BusinessMessageReject, Fix::Protocol::Messages::Heartbeat, Fix::Protocol::Messages::Logon, Fix::Protocol::Messages::Logout, Fix::Protocol::Messages::MarketDataIncrementalRefresh, Fix::Protocol::Messages::MarketDataRequest, Fix::Protocol::Messages::MarketDataSnapshot, Fix::Protocol::Messages::Reject, Fix::Protocol::Messages::ResendRequest, Fix::Protocol::Messages::SequenceReset, Fix::Protocol::Messages::TestRequest
Constant Summary collapse
- DEFAULT_VERSION =
Default version for when we do not specify anything
'FIX.4.4'- @@expected_version =
DEFAULT_VERSION
Instance Attribute Summary
Attributes inherited from MessagePart
#delegations, #name, #parse_failure
Class Method Summary collapse
Instance Method Summary collapse
-
#dump ⇒ String
Dumps this message as a FIX protocol message, it will automatically calculate the body length and and checksum.
-
#errors ⇒ Array<String>
Returns the errors relevant to the message header.
-
#initialize ⇒ Message
constructor
A new instance of Message.
-
#valid? ⇒ Boolean
Whether this instance is ready to be dumped as a valid FIX message.
Methods inherited from MessagePart
collection, field, inherited, #initialize_node, #node_for_name, #nodes, parent_delegate, parse, #parse, part, structure, unordered
Constructor Details
#initialize ⇒ Message
Returns a new instance of Message.
34 35 36 37 |
# File 'lib/fix/protocol/message.rb', line 34 def initialize super header.msg_type = MessageClassMapping.reverse_get(self.class) end |
Class Method Details
.version=(v) ⇒ Object
17 18 19 |
# File 'lib/fix/protocol/message.rb', line 17 def self.version=(v) @@expected_version = v end |
Instance Method Details
#dump ⇒ String
Dumps this message as a FIX protocol message, it will automatically calculate the body length and and checksum
45 46 47 48 49 50 51 52 |
# File 'lib/fix/protocol/message.rb', line 45 def dump if valid? dumped = super header.body_length = dumped.gsub(/^8=[^\x01]+\x01/, '').gsub(/^9=[^\x01]+\x01/, '').length dumped = super "#{dumped}10=#{'%03d' % (dumped.bytes.inject(&:+) % 256)}\x01" end end |
#errors ⇒ Array<String>
Returns the errors relevant to the message header
68 69 70 71 72 73 74 |
# File 'lib/fix/protocol/message.rb', line 68 def errors if (version == @@expected_version) super else [super, "Unsupported version: <#{version}>, expected <#{@@expected_version}>"].flatten end end |
#valid? ⇒ Boolean
Whether this instance is ready to be dumped as a valid FIX message
59 60 61 |
# File 'lib/fix/protocol/message.rb', line 59 def valid? (errors.nil? || errors.empty?) && parse_failure.nil? end |