class EventStore::HTTP::Session::Factory

Constants

UnknownType

Attributes

type[W]

Public Class Methods

build(settings=nil, namespace: nil, type: nil) click to toggle source
# File lib/event_store/http/session/factory.rb, line 15
def self.build(settings=nil, namespace: nil, type: nil)
  settings ||= Settings.instance
  namespace = Array(namespace)

  instance = new settings, namespace
  instance.type = type unless type.nil?
  instance
end
call(settings=nil, **arguments) click to toggle source
# File lib/event_store/http/session/factory.rb, line 24
def self.call(settings=nil, **arguments)
  instance = build settings, **arguments
  instance.()
end
types() click to toggle source
# File lib/event_store/http/session/factory.rb, line 63
def self.types
  @types ||= {
    :any_member => AnyMember,
    :leader => Leader
  }
end

Public Instance Methods

call() click to toggle source
# File lib/event_store/http/session/factory.rb, line 29
def call
  logger.trace { "Constructing Session (Type: #{type.inspect})" }

  cls = resolve_class

  instance = cls.new

  settings.set instance, namespace

  Retry.configure instance, settings, namespace: namespace
  Log::Data.configure instance, Session, attr_name: :data_logger
  connect = Connect.configure instance, settings, namespace: namespace

  instance.configure

  logger.debug { "Session constructed (Type: #{type.inspect}, Class: #{instance.class})" }

  instance
end
get_type() click to toggle source
# File lib/event_store/http/session/factory.rb, line 49
def get_type
  type = settings.get :type, namespace
  type ||= Defaults.type
  type.to_sym
end
resolve_class() click to toggle source
# File lib/event_store/http/session/factory.rb, line 55
def resolve_class
  self.class.types.fetch type do
    error_message = "Unknown session type (Type: #{type.inspect}, KnownTypes: #{self.class.types.keys.inspect})"
    logger.error { error_message }
    raise UnknownType, error_message
  end
end
type() click to toggle source
# File lib/event_store/http/session/factory.rb, line 11
def type
  @type ||= get_type
end