class Pushr::Daemon::Apns2Support::Push
Attributes
http2_request[R]
Public Class Methods
new(http2_request)
click to toggle source
# File lib/pushr/daemon/apns2_support/push.rb, line 7 def initialize(http2_request) @http2_request = http2_request @headers = {} @data = '' @events = {} listen_for_http2_events end
Public Instance Methods
emit(event, arg)
click to toggle source
# File lib/pushr/daemon/apns2_support/push.rb, line 23 def emit(event, arg) return unless @events[event] @events[event].each { |b| b.call(arg) } end
on(event, &block)
click to toggle source
# File lib/pushr/daemon/apns2_support/push.rb, line 16 def on(event, &block) raise ArgumentError, 'on event must provide a block' unless block_given? @events[event] ||= [] @events[event] << block end
Private Instance Methods
listen_for_http2_events()
click to toggle source
# File lib/pushr/daemon/apns2_support/push.rb, line 30 def listen_for_http2_events @http2_request.on(:headers) { |headers| @headers.merge!(headers) } @http2_request.on(:body_chunk) { |chunk| @data << chunk } @http2_request.on(:close) do response = Response.new(headers: @headers, body: @data) emit(:response, response) end end