Module: Happn

Defined in:
lib/happn.rb,
lib/happn/event.rb,
lib/happn/query.rb,
lib/happn/version.rb,
lib/happn/projector.rb,
lib/happn/subscription.rb,
lib/happn/configuration.rb,
lib/happn/event_consumer.rb,
lib/happn/subscription_repository.rb

Defined Under Namespace

Classes: Configuration, Event, EventConsumer, Projector, Query, Subscription, SubscriptionRepository

Constant Summary collapse

VERSION =
"1.1.0"

Class Method Summary collapse

Class Method Details

.configObject



16
17
18
# File 'lib/happn.rb', line 16

def self.config
  @configuration
end

.configure {|@configuration ||= Happn::Configuration.new| ... } ⇒ Object

Yields:



12
13
14
# File 'lib/happn.rb', line 12

def self.configure
  yield @configuration ||= Happn::Configuration.new
end

.create_queue_onlyObject



35
36
37
38
# File 'lib/happn.rb', line 35

def self.create_queue_only
  Happn.init
  @event_consumer.wait_until_connected
end

.initObject



24
25
26
27
28
29
# File 'lib/happn.rb', line 24

def self.init
  @logger                 = @configuration.logger || Logger.new(STDOUT)
  subscription_repository = SubscriptionRepository.new(@logger)
  Happn::register(@configuration.projector_classes, subscription_repository)
  @event_consumer         = EventConsumer.new(@logger, @configuration, subscription_repository)
end

.loggerObject



20
21
22
# File 'lib/happn.rb', line 20

def self.logger
  @logger
end

.register(projector_classes, subscription_repository) ⇒ Object



62
63
64
65
66
67
68
69
# File 'lib/happn.rb', line 62

def self.register(projector_classes, subscription_repository)
  @logger.info("#{projector_classes.size} projector are going to be registered...")
  projector_classes.each do | projector_class |
    projector = projector_class.new(@logger, subscription_repository)
    projector.define_handlers
    @logger.info("Projector '#{projector_class}' registered")
  end
end

.startObject



31
32
33
# File 'lib/happn.rb', line 31

def self.start
  @event_consumer.start
end