class Micro::Service::Base

Public Class Methods

&(service) click to toggle source
# File lib/micro/service/base.rb, line 16
def self.&(service)
  Pipeline::Safe[self, service]
end
>>(service) click to toggle source
# File lib/micro/service/base.rb, line 12
def self.>>(service)
  Pipeline[self, service]
end
__failure_type(arg, type) click to toggle source
# File lib/micro/service/base.rb, line 30
def self.__failure_type(arg, type)
  return type if type != :error

  case arg
  when Exception then :exception
  when Symbol then arg
  else type
  end
end
__new__(result, arg) click to toggle source
# File lib/micro/service/base.rb, line 24
def self.__new__(result, arg)
  instance = new(arg)
  instance.__set_result__(result)
  instance
end
call(options = {}) click to toggle source
# File lib/micro/service/base.rb, line 20
def self.call(options = {})
  new(options).call
end
to_proc() click to toggle source
# File lib/micro/service/base.rb, line 8
def self.to_proc
  Proc.new { |arg| call(arg) }
end

Public Instance Methods

__set_result__(result) click to toggle source
# File lib/micro/service/base.rb, line 48
def __set_result__(result)
  raise Error::InvalidResultInstance unless result.is_a?(Result)
  raise Error::ResultIsAlreadyDefined if @__result
  @__result = result
end
call() click to toggle source
# File lib/micro/service/base.rb, line 44
def call
  __call
end
call!() click to toggle source
# File lib/micro/service/base.rb, line 40
def call!
  raise NotImplementedError
end

Private Instance Methods

Failure(arg = :error) { |: arg| ... } click to toggle source
# File lib/micro/service/base.rb, line 71
def Failure(arg = :error)
  value = block_given? ? yield : arg
  type = self.class.__failure_type(value, block_given? ? arg : :error)
  __get_result__.__set__(false, value, type, self)
end
Success(arg = :ok) { || ... } click to toggle source
# File lib/micro/service/base.rb, line 66
def Success(arg = :ok)
  value, type = block_given? ? [yield, arg] : [arg, :ok]
  __get_result__.__set__(true, value, type, nil)
end
__call() click to toggle source
# File lib/micro/service/base.rb, line 56
def __call
  result = call!
  return result if result.is_a?(Result)
  raise Error::UnexpectedResult.new(self.class)
end
__get_result__() click to toggle source
# File lib/micro/service/base.rb, line 62
def __get_result__
  @__result ||= Result.new
end