Sha256: 28e1365c65bf6c1622268acb337a5361a3b03bc82c6056c485bc80956e7aeb8d
Contents?: true
Size: 651 Bytes
Versions: 1
Compression:
Stored size: 651 Bytes
Contents
require "forwardable" require "monitor" require "singleton" module BanksApi class Bank include Singleton extend SingleForwardable def_single_delegators :instance, :register_bank, :get_bank_api def initialize @registry = {} @mutex = Monitor.new end def register_bank(bank_name, api_class) with_mutex do registry[bank_name.to_s] = api_class end end def get_bank_api(bank_name) with_mutex do registry.fetch(bank_name.to_s) end end private attr_reader :registry, :mutex def with_mutex mutex.synchronize { yield } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
banks_api-0.1.5 | lib/banks_api/bank.rb |