Sha256: b474fddb5af9098bca7a142c102f7be40d62f6cededdfc4b9c72b1685dd59485

Contents?: true

Size: 819 Bytes

Versions: 3

Compression:

Stored size: 819 Bytes

Contents

require 'thread'

class Webmoney

  class Messenger
    
    def initialize(owner)
      @webmoney = owner
      @queue = Queue.new
      @thread = Thread.new(@queue) do |q|
        loop do
          msg = q.pop
          unless msg.nil?
            begin
              result = @webmoney.request(:send_message, msg)
              # Requeue if fail
              @queue.push(msg) unless result.kind_of?(Hash)
            rescue ResultError, ResponseError => e
              # TODO Replace this to logger call
              # puts "#{e}: #{@webmoney.error} #{@webmoney.errormsg}"

              # Requeue message
              @queue.push(msg)
            end
          end
        end
      end
    end
    
    def push(msg)
      @queue.push(msg)
    end

    # TODO callback on success send message
    
  end
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
webmoney-0.0.4.5 lib/messenger.rb
webmoney-0.0.4.6 lib/messenger.rb
webmoney-0.0.4.4 lib/messenger.rb