module Neo4j::ActiveNode

Public Instance Methods

even_easier_id() click to toggle source
# File lib/neo4j/even_easier_id.rb, line 20
def even_easier_id
  @@mutex.lock
  begin
    count = @@counter = (@@counter + 1) % 0xFFFFFF
  ensure
    @@mutex.unlock rescue nil
  end
  machine_id = Digest::MD5.digest(Socket.gethostname).unpack("N")[0]
  process_id = RUBY_ENGINE == 'jruby' ? "#{Process.pid}#{Thread.current.object_id}".hash % 0xFFFF : Process.pid % 0xFFFF
  [ Time.now.to_i, machine_id, process_id, count << 8 ].pack("N NX lXX NX").unpack("H*")[0]
end