Module: Neo4j::ActiveNode
- Includes:
- NewId
- Defined in:
- lib/neo4j/even_easier_id.rb
Defined Under Namespace
Modules: EvenEasierId
Constant Summary collapse
- @@mutex =
Mutex.new
- @@counter =
0
Instance Method Summary collapse
Instance Method Details
#even_easier_id ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 |
# 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 |