Class: Rpush::Daemon::Dispatcher::ApnsTcp
- Includes:
- Loggable, Reflectable
- Defined in:
- lib/rpush/daemon/dispatcher/apns_tcp.rb
Constant Summary collapse
- SELECT_TIMEOUT =
10
- ERROR_TUPLE_BYTES =
6
- APNS_ERRORS =
{ 1 => 'Processing error', 2 => 'Missing device token', 3 => 'Missing topic', 4 => 'Missing payload', 5 => 'Missing token size', 6 => 'Missing topic size', 7 => 'Missing payload size', 8 => 'Invalid device token', 10 => 'APNs closed connection (possible maintenance)', 255 => 'None (unknown error)' }
Instance Method Summary collapse
- #cleanup ⇒ Object
- #dispatch(payload) ⇒ Object
-
#initialize(*args) ⇒ ApnsTcp
constructor
A new instance of ApnsTcp.
Methods included from Reflectable
Methods included from Loggable
#log_debug, #log_error, #log_info, #log_warn
Constructor Details
#initialize(*args) ⇒ ApnsTcp
Returns a new instance of ApnsTcp.
23 24 25 26 27 28 |
# File 'lib/rpush/daemon/dispatcher/apns_tcp.rb', line 23 def initialize(*args) super @dispatch_mutex = Mutex.new @stop_error_receiver = false @connection.on_connect { start_error_receiver } end |
Instance Method Details
#cleanup ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rpush/daemon/dispatcher/apns_tcp.rb', line 37 def cleanup if Rpush.config.push # In push mode only a single batch is sent, followed by immediate shutdown. # Allow the error receiver time to handle any errors. @reconnect_disabled = true sleep 1 end @stop_error_receiver = true super @error_receiver_thread.join if @error_receiver_thread rescue StandardError => e log_error(e) reflect(:error, e) ensure @error_receiver_thread = nil end |
#dispatch(payload) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/rpush/daemon/dispatcher/apns_tcp.rb', line 30 def dispatch(payload) @dispatch_mutex.synchronize do @delivery_class.new(@app, @connection, payload.batch).perform record_batch(payload.batch) end end |