Sha256: b41a30adbf517e102d1283b643585d662bdde2f765faece45ff082893ae5eb88

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 KB

Contents

require 'ernie'

module Hoth
  module Providers
    class BertRPCProvider
      
      def self.create_ernie_definition
        Ernie.log "Possible Service implementations: #{Object.constants.grep(/.*Impl$/).inspect}"
        Object.constants.grep(/.*Impl$/).each do |impl_class_name|
          if impl_class = Object.const_get(impl_class_name) #&& impl_class.respond_to?(:execute)
            Ernie.log "Service implementation was loaded! (#{impl_class.inspect})"
            if impl_class.respond_to?(:execute)
              service_name = impl_class_name.gsub("Impl", "").underscore.to_sym
              mod(service_name) do
                fun(:execute) do |*args|
                  return_value = begin
                    Hoth::Transport::BertTransport::TuplePreparer.prepare(Hoth::Services.send(service_name, *args))
                  rescue Exception => e
                    Ernie.log %Q{An Exception occured: #{e.message} -- #{e.backtrace.join("\n\t")}}
                    false
                  end
                end
              end
            else
              Ernie.log "Implementation wasn't applicatable. :execute method is missing!"
            end
          else
            Ernie.log "Service implementation was not loaded! (#{impl_class_name.inspect})"
          end
        end
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hoth-0.2.2 lib/hoth/providers/bertrpc_provider.rb
hoth-0.2.1 lib/hoth/providers/bertrpc_provider.rb
hoth-0.1.2 lib/hoth/providers/bertrpc_provider.rb
hoth-0.1.1 lib/hoth/providers/bertrpc_provider.rb