Methods

Class/Module Index [+]

Quicksearch

Celluloid::UUID

Clearly Ruby doesn't have enough UUID libraries This one aims to be fast and simple with good support for multiple threads If there's a better UUID library I can use with similar multithreaded performance, I certainly wouldn't mind using a gem for this!

Constants

BLOCK_SIZE
PREFIX

Public Class Methods

generate() click to toggle source
# File lib/celluloid/uuid.rb, line 16
def self.generate
  thread = Thread.current

  unless thread.uuid_limit
    @counter_mutex.synchronize do
      block_base = @counter
      @counter += BLOCK_SIZE
      thread.uuid_counter = block_base
      thread.uuid_limit   = @counter - 1
    end
  end

  counter = thread.uuid_counter
  if thread.uuid_counter >= thread.uuid_limit
    thread.uuid_counter = thread.uuid_limit = nil
  else
    thread.uuid_counter += 1
  end

  "#{PREFIX}-#{sprintf("%012x", counter)}".freeze
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.