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