module Appsignal::Extension::Jruby::StringHelpers

def make_appsignal_string(ruby_string)

def make_appsignal_string(ruby_string)
  unless ruby_string.is_a?(String)
    raise ArgumentError, "argument is not a string"
  end
  AppsignalString.new.tap do |appsignal_string|
    appsignal_string[:len] = ruby_string.bytesize
    appsignal_string[:buf] = FFI::MemoryPointer.from_string(ruby_string)
  end
end

def make_ruby_string(appsignal_string)

def make_ruby_string(appsignal_string)
  appsignal_string[:buf].read_string(appsignal_string[:len]).tap do |ruby_string|
    ruby_string.force_encoding(Encoding::UTF_8)
  end
end