module Appsignal::Extension::Jruby

def self.lib_extension

def self.lib_extension
  if Appsignal::System.agent_platform.include?("darwin")
    "dylib"
  else
    "so"
  end
end

def add_distribution_value(key, value, tags)

def add_distribution_value(key, value, tags)
  appsignal_add_distribution_value(make_appsignal_string(key), value, tags.pointer)
end

def data_array_new

def data_array_new
  Data.new(appsignal_data_array_new)
end

def data_map_new

def data_map_new
  Data.new(appsignal_data_map_new)
end

def diagnose

def diagnose
  make_ruby_string(appsignal_diagnose)
end

def get_server_state(key)

def get_server_state(key)
  state = appsignal_get_server_state(make_appsignal_string(key))
  make_ruby_string state if state[:len] > 0
end

def increment_counter(key, value, tags)

def increment_counter(key, value, tags)
  appsignal_increment_counter(make_appsignal_string(key), value, tags.pointer)
end

def running_in_container?

def running_in_container?
  appsignal_running_in_container
end

def set_gauge(key, value, tags)

def set_gauge(key, value, tags)
  appsignal_set_gauge(make_appsignal_string(key), value, tags.pointer)
end

def set_host_gauge(key, value)

def set_host_gauge(key, value)
  appsignal_set_host_gauge(make_appsignal_string(key), value)
end

def set_process_gauge(key, value)

def set_process_gauge(key, value)
  appsignal_set_process_gauge(make_appsignal_string(key), value)
end

def start

def start
  appsignal_start
end

def start_transaction(transaction_id, namespace, gc_duration_ms)

def start_transaction(transaction_id, namespace, gc_duration_ms)
  transaction = appsignal_start_transaction(
    make_appsignal_string(transaction_id),
    make_appsignal_string(namespace),
    gc_duration_ms
  )
  return if !transaction || transaction.null?
  Transaction.new(transaction)
end

def stop

def stop
  appsignal_stop
end