lib/ably/models/protocol_message.rb in ably-0.7.2 vs lib/ably/models/protocol_message.rb in ably-0.7.4

- old
+ new

@@ -35,11 +35,11 @@ # @!attribute [r] hash # @return [Hash] Access the protocol message Hash object ruby'fied to use symbolized keys # class ProtocolMessage include Ably::Modules::ModelCommon - include EventMachine::Deferrable if defined?(Ably::Realtime) + include Ably::Modules::SafeDeferrable if defined?(Ably::Realtime) extend Ably::Modules::Enum # Actions which are sent by the Ably Realtime API # # The values correspond to the ints which the API @@ -67,11 +67,19 @@ # Indicates this protocol message action will generate an ACK response such as :message or :presence def self.ack_required?(for_action) [ACTION.Presence, ACTION.Message].include?(ACTION(for_action)) end - def initialize(hash_object) + # {ProtocolMessage} initializer + # + # @param hash_object [Hash] object with the underlying protocol message data + # @param [Hash] options an options Hash for this initializer + # @option options [Logger] :logger An optional Logger to be used by {Ably::Modules::SafeDeferrable} if an exception is caught in a callback + # + def initialize(hash_object, options = {}) + @logger = options[:logger] # Logger expected for SafeDeferrable + @raw_hash_object = hash_object @hash_object = IdiomaticRubyWrapper(@raw_hash_object.clone) raise ArgumentError, 'Invalid ProtocolMessage, action cannot be nil' if @hash_object[:action].nil? @hash_object[:action] = ACTION(@hash_object[:action]).to_i unless @hash_object[:action].kind_of?(Integer) @@ -145,22 +153,22 @@ end def messages @messages ||= Array(hash[:messages]).map do |message| - Ably::Models.Message(message, self) + Ably::Models.Message(message, protocol_message: self) end end def add_message(message) messages << message end def presence @presence ||= Array(hash[:presence]).map do |message| - Ably::Models.PresenceMessage(message, self) + Ably::Models.PresenceMessage(message, protocol_message: self) end end # Flags as bits def flags @@ -204,7 +212,10 @@ # @api private def invalid? action_enum = action rescue nil !action_enum || (ack_required? && !has_serial?) end + + private + attr_reader :logger end end