Sha256: a77140c696ac83369d09bfbbaf4e95a08fc5089daadf029ddfcfd1d58bc0a834

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

# -*- coding: utf-8 -*-
# Либа, добавляет и ивлекает сообщения из общей глобальной очереди сообщений
# В конфиге:
# GameQueue.redis = $redis
# GameQueue.queue_name = 'skyburg_main_queue'
#
# Добавление сообщений
# GameQueue.push(:combat_created, {some: 'fucking', super: 'params'})
#
# Получение сообещений
# GameQueue.pop
class GameQueue
  require 'singleton'
  include Singleton
  attr_accessor :redis, :queue_name

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

  # ==== Parameters
  # message_name<String>: тип сообщения
  # message_body<Object>:: любой ruby объект с простыми данными, хэш, массив, число, строка...
  def push(message_name, message_body)
    redis.lpush(queue_name, Marshal.dump([message_name.to_s, message_body]))
  end

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


  # ==== Returns
  # <Array[String, Object]>::
  def pop
    result = redis.rpop(queue_name)
    Marshal.load(result) if result
  end

  # ==== Description
  # очищает всю очередь
  def clean!
    redis.del(queue_name)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
game-queue-0.2.4 lib/game-queue.rb