Class: GameQueue

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/game-queue.rb

Overview

Либа, добавляет и ивлекает сообщения из общей глобальной очереди сообщений В конфиге: GameQueue.redis = $redis GameQueue.queue_name = ‘skyburg_main_queue’

Добавление сообщений GameQueue.push(:combat_created, ‘fucking’, super: ‘params’)

Получение сообещений GameQueue.pop

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#queue_nameObject

Returns the value of attribute queue_name.



15
16
17
# File 'lib/game-queue.rb', line 15

def queue_name
  @queue_name
end

#redisObject

Returns the value of attribute redis.



15
16
17
# File 'lib/game-queue.rb', line 15

def redis
  @redis
end

Class Method Details

.method_missing(method_name, *params) ⇒ Object



17
18
19
# File 'lib/game-queue.rb', line 17

def self.method_missing(method_name, *params)
  instance.send(method_name, *params)
end

Instance Method Details

#async_push(*params) ⇒ Object

См. push



29
30
31
# File 'lib/game-queue.rb', line 29

def async_push(*params)
  Thread.new { push *params }
end

#popObject

Returns

<Array[String, Object]>


36
37
38
39
# File 'lib/game-queue.rb', line 36

def pop
  result = $redis.rpop(queue_name)
  eval(result) if result
end

#push(message_name, message_body) ⇒ Object

Parameters

message_name<String>: тип сообщения

message_body<Object>

любой ruby объект с простыми данными, хэш, массив, число, строка…



24
25
26
# File 'lib/game-queue.rb', line 24

def push(message_name, message_body)
  $redis.lpush(queue_name, [message_name.to_s, message_body].to_s)
end