module Celluloid::UUID - celluloid-0.15.2 Documentation

# module 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