Class: Mameapns::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/mameapns/session.rb,
lib/mameapns/session/deliver.rb,
lib/mameapns/session/feedback.rb

Direct Known Subclasses

Deliver, Feedback

Defined Under Namespace

Classes: Deliver, Feedback

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Session

Returns a new instance of Session.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/mameapns/session.rb', line 9

def initialize(options)
  options.each do |k, v|
    setter_name = "#{k}="
    self.__send__(setter_name, v) if respond_to?(setter_name)
  end

  @connection ||= Connection.new(host, port,
    ssl_cert: ssl_cert,
    ssl_cert_key: ssl_cert_key,
    ssl_cert_pass: ssl_cert_pass,
    )
  
  @on_exception = nil
  @on_error = nil
  
  @thread = nil
  @queue = Queue.new
  @running = false
  @interruptible_sleep = InterruptibleSleep.new
end

Instance Attribute Details

#connectionObject

Returns the value of attribute connection.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def connection
  @connection
end

#hostObject

Returns the value of attribute host.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def host
  @host
end

#interruptible_sleepObject

Returns the value of attribute interruptible_sleep.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def interruptible_sleep
  @interruptible_sleep
end

#portObject

Returns the value of attribute port.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def port
  @port
end

#queueObject

Returns the value of attribute queue.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def queue
  @queue
end

#ssl_certObject

Returns the value of attribute ssl_cert.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def ssl_cert
  @ssl_cert
end

#ssl_cert_keyObject

Returns the value of attribute ssl_cert_key.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def ssl_cert_key
  @ssl_cert_key
end

#ssl_cert_passObject

Returns the value of attribute ssl_cert_pass.



3
4
5
# File 'lib/mameapns/session.rb', line 3

def ssl_cert_pass
  @ssl_cert_pass
end

Instance Method Details

#closeObject



95
96
97
# File 'lib/mameapns/session.rb', line 95

def close
  @connection.close
end

#connectObject



91
92
93
# File 'lib/mameapns/session.rb', line 91

def connect
  @connection.connect
end

#end_sessionObject



48
49
50
# File 'lib/mameapns/session.rb', line 48

def end_session
  # expect to implement by sub class
end

#handle_error(notification, err) ⇒ Object



52
53
54
# File 'lib/mameapns/session.rb', line 52

def handle_error(notification, err)
  @on_error.call(notification, err) if @on_error
end

#handle_sent(notification) ⇒ Object



56
57
58
# File 'lib/mameapns/session.rb', line 56

def handle_sent(notification)
  @on_sent.call(notification) if @on_sent
end

#on_error(&block) ⇒ Object



107
108
109
# File 'lib/mameapns/session.rb', line 107

def on_error(&block)
  @on_error = block
end

#on_exception(&block) ⇒ Object



103
104
105
# File 'lib/mameapns/session.rb', line 103

def on_exception(&block)
  @on_exception = block
end

#on_sent(&block) ⇒ Object



111
112
113
# File 'lib/mameapns/session.rb', line 111

def on_sent(&block)
  @on_sent = block
end

#push(data) ⇒ Object



75
76
77
# File 'lib/mameapns/session.rb', line 75

def push(data)
  @queue << data
end

#read(size) ⇒ Object



83
84
85
# File 'lib/mameapns/session.rb', line 83

def read(size)
  @connection.read(size)
end

#reconnectObject



99
100
101
# File 'lib/mameapns/session.rb', line 99

def reconnect
  @connection.reconnect
end

#running?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/mameapns/session.rb', line 71

def running?
  !!@running
end

#select(wait_time) ⇒ Object



79
80
81
# File 'lib/mameapns/session.rb', line 79

def select(wait_time)
  @connection.select(wait_time)
end

#startObject



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/mameapns/session.rb', line 30

def start
  # connect to apns.
  @running = true
  
  @thread = Thread.start do
    begin
      start_session
    rescue => e
      @on_exception.call(e) if @on_exception
      retry
    end
  end
end

#start_sessionObject



44
45
46
# File 'lib/mameapns/session.rb', line 44

def start_session
  # expect to implement by sub class
end

#stopObject



60
61
62
63
64
65
# File 'lib/mameapns/session.rb', line 60

def stop
  @queue << nil
  @running = false
  @interruptible_sleep.interrupt
  sleep 1 # FIXME: magic number
end

#wait_stopObject



67
68
69
# File 'lib/mameapns/session.rb', line 67

def wait_stop
  @thread.join
end

#write(data) ⇒ Object



87
88
89
# File 'lib/mameapns/session.rb', line 87

def write(data)
  @connection.write(data)
end