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



39
40
41
# File 'lib/game-queue.rb', line 39

def async_push(*params)
  async_push_with_delay(0, params)
end

#async_push_with_delay(delay, *params) ⇒ Object

Сделать отложенный асинхронный push

Parameters

delay<Integer>

время задержки в секундах

params (См. push)



34
35
36
# File 'lib/game-queue.rb', line 34

def async_push_with_delay(delay, *params)
  Thread.new { sleep delay; push *params }
end

#clean!Object

Description

очищает всю очередь



53
54
55
# File 'lib/game-queue.rb', line 53

def clean!
  redis.del(queue_name)
end

#popObject

Returns

<Array[String, Object, Integer]>


46
47
48
49
# File 'lib/game-queue.rb', line 46

def pop
  result = redis.rpop(queue_name)
  Marshal.load(result) if result
end

#push(message_name, message_body, errors_counter = 0) ⇒ Object

Parameters

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

message_body<Object>

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

errors_counter<Integer>

счетчик ошибок, которые возникают при попытке обработать взятую из очереди запись

если запись после этого снова возвращается в очередь, его следует увеличить.



26
27
28
# File 'lib/game-queue.rb', line 26

def push(message_name, message_body, errors_counter = 0)
  redis.lpush(queue_name, Marshal.dump([message_name.to_s, message_body, errors_counter]))
end