Sha256: d1dd260c5f8fadf65caa46b1e15e57d9a8ff7e41f5691f165778098589160e1f

Contents?: true

Size: 1.19 KB

Versions: 17

Compression:

Stored size: 1.19 KB

Contents

require 'concurrent/synchronization/abstract_object' # for JRuby
require 'concurrent/utility/engine'

module Concurrent
  module Utility

    # @!visibility private
    module NativeExtensionLoader

      @c_ext_loaded    ||= false
      @java_ext_loaded ||= false

      # @!visibility private
      def allow_c_extensions?
        Concurrent.on_cruby?
      end

      if Concurrent.on_cruby? && !@c_ext_loaded
        tries = [
          lambda do
            require 'concurrent/extension'
            @c_ext_loaded = true
          end,
          lambda do
            # may be a Windows cross-compiled native gem
            require "concurrent/#{RUBY_VERSION[0..2]}/extension"
            @c_ext_loaded = true
          end]

        tries.each do |try|
          begin
            try.call
            break
          rescue LoadError
            next
          end
        end
      end

      if Concurrent.on_jruby? && !@java_ext_loaded
        begin
          require 'concurrent_ruby_ext'
          @java_ext_loaded = true
        rescue LoadError
          # move on with pure-Ruby implementations
        end
      end
    end
  end

  # @!visibility private
  extend Utility::NativeExtensionLoader
end

Version data entries

17 entries across 15 versions & 5 rubygems

Version Path
logstash-filter-zabbix-0.1.2 vendor/bundle/jruby/1.9/gems/concurrent-ruby-0.9.2-java/lib/concurrent/utility/native_extension_loader.rb
logstash-filter-zabbix-0.1.1 vendor/bundle/jruby/1.9/gems/concurrent-ruby-0.9.2-java/lib/concurrent/utility/native_extension_loader.rb
ivanvc-logstash-input-s3-3.1.1.4 vendor/local/gems/concurrent-ruby-0.9.2-java/lib/concurrent/utility/native_extension_loader.rb
ivanvc-logstash-input-s3-3.1.1.3 vendor/local/gems/concurrent-ruby-0.9.2-java/lib/concurrent/utility/native_extension_loader.rb
ivanvc-logstash-input-s3-3.1.1.2 vendor/local/gems/concurrent-ruby-0.9.2-java/lib/concurrent/utility/native_extension_loader.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/concurrent-ruby-0.9.2-java/lib/concurrent/utility/native_extension_loader.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/logstash-codec-json-2.0.3/vendor/gems/concurrent-ruby-0.9.1-java/lib/concurrent/utility/native_extension_loader.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/concurrent-ruby-0.9.1-java/lib/concurrent/utility/native_extension_loader.rb
logstash-codec-json-2.0.3 vendor/gems/concurrent-ruby-0.9.1-java/lib/concurrent/utility/native_extension_loader.rb
concurrent-ruby-0.9.2-java lib/concurrent/utility/native_extension_loader.rb
concurrent-ruby-0.9.2 lib/concurrent/utility/native_extension_loader.rb
logstash-input-beats-0.9.2 vendor/jruby/1.9/gems/concurrent-ruby-0.9.1-java/lib/concurrent/utility/native_extension_loader.rb
logstash-input-beats-0.9.1 vendor/jruby/1.9/gems/concurrent-ruby-0.9.1-java/lib/concurrent/utility/native_extension_loader.rb
concurrent-ruby-1.0.0.pre1 lib/concurrent/utility/native_extension_loader.rb
concurrent-ruby-1.0.0.pre1-java lib/concurrent/utility/native_extension_loader.rb
concurrent-ruby-0.9.1 lib/concurrent/utility/native_extension_loader.rb
concurrent-ruby-0.9.1-java lib/concurrent/utility/native_extension_loader.rb