Sha256: 4909a187e47edc0cfff40b6cefc8599b0281d95defa161b7205463581ee94928

Contents?: true

Size: 887 Bytes

Versions: 14

Compression:

Stored size: 887 Bytes

Contents

# -*- encoding: utf-8 -*-

# Mixin for {OnStomp::Client clients} to provide receipt management
module OnStomp::Interfaces::ReceiptManager
  private
  def configure_receipt_management
    @receipt_monitor = Monitor.new
    @receipt_backs = {}
    before_disconnect do |d, con|
      @receipt_to_close = d[:receipt] if d[:receipt]
    end
    on_receipt do |r, con|
      dispatch_receipt r
      close if r[:'receipt-id'] == @receipt_to_close
    end
  end

  def add_receipt f, cb
    f[:receipt] = OnStomp.next_serial unless f.header?(:receipt)
    @receipt_monitor.synchronize { @receipt_backs[f[:receipt]] = cb }
    self
  end
  
  def clear_receipts
    @receipt_monitor.synchronize { @receipt_backs.clear }
  end
  
  def dispatch_receipt receipt
    cb = @receipt_monitor.synchronize { @receipt_backs.delete(receipt[:'receipt-id']) }
    cb && cb.call(receipt)
    self
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
onstomp-1.0.12 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.11 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.10 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.9 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.8 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.7 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.6 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.5 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.4 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.3 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.2 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.1 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.0 lib/onstomp/interfaces/receipt_manager.rb
onstomp-1.0.0pre1 lib/onstomp/interfaces/receipt_manager.rb