Class: Tamashii::Server::Subscription::Redis

Inherits:
Object
  • Object
show all
Defined in:
lib/tamashii/server/subscription/redis.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(server) ⇒ Redis

Returns a new instance of Redis.



8
9
10
# File 'lib/tamashii/server/subscription/redis.rb', line 8

def initialize(server)
  @server = server
end

Instance Method Details

#broadcast(payload) ⇒ Object



12
13
14
15
# File 'lib/tamashii/server/subscription/redis.rb', line 12

def broadcast(payload)
  Server.logger.info("Broadcasting: #{payload}")
  broadcast_conn.publish('_tamashii_internal', pack(payload))
end

#pack(data) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/tamashii/server/subscription/redis.rb', line 29

def pack(data)
  case data
  when Numeric then "N:#{data}"
  when String then "S:#{data}"
  else
    "B:#{data.pack('C*')}"
  end
end

#prepareObject



25
26
27
# File 'lib/tamashii/server/subscription/redis.rb', line 25

def prepare
  ensure_listener_running
end

#shutdownObject



21
22
23
# File 'lib/tamashii/server/subscription/redis.rb', line 21

def shutdown
  subscription_conn.unsubscribe
end

#subscribeObject



17
18
19
# File 'lib/tamashii/server/subscription/redis.rb', line 17

def subscribe
  ensure_listener_running
end

#unpack(data) ⇒ Object



38
39
40
41
42
43
44
45
# File 'lib/tamashii/server/subscription/redis.rb', line 38

def unpack(data)
  case data[0..1]
  when 'N:' then data[2..-1].to_i
  when 'S:' then data[2..-1]
  else
    data[2..-1].unpack('C*')
  end
end