lib/message_driver/adapters/base.rb in message-driver-0.1.0 vs lib/message_driver/adapters/base.rb in message-driver-0.2.0.rc1

- old
+ new

@@ -1,29 +1,76 @@ module MessageDriver module Adapters class Base + include Logging + + attr_accessor :contexts + def initialize(configuration) raise "Must be implemented in subclass" end + def new_context + @contexts ||= [] + ctx = build_context + contexts << ctx + ctx + end + + def build_context + raise "Must be implemented in subclass" + end + + def stop + contexts.each { |ctx| ctx.invalidate } if contexts + end + end + + class ContextBase + include Logging + + attr_reader :adapter + attr_accessor :valid + + def initialize(adapter) + @adapter = adapter + @valid = true + end + def publish(destination, body, headers={}, properties={}) raise "Must be implemented in subclass" end def pop_message(destination, options={}) raise "Must be implemented in subclass" end - def stop - raise "Must be implemented in subclass" + def subscribe(destination, options={}, &consumer) + raise "#subscribe is not supported by #{adapter.class}" end def create_destination(name, dest_options={}, message_props={}) raise "Must be implemented in subclass" end - def with_transaction(options={}, &block) - yield + def valid? + @valid + end + + def invalidate + @valid = false + end + + def supports_transactions? + false + end + + def supports_client_acks? + false + end + + def supports_subscriptions? + false end end end end