def initialize(path, opts = {}, &block)
@klass = self.class
@path = path
@opts = opts
@retries = getopt 'retries' , @klass.retries
@max_age = getopt 'max_age' , @klass.max_age
@sleep_inc = getopt 'sleep_inc' , @klass.sleep_inc
@min_sleep = getopt 'min_sleep' , @klass.min_sleep
@max_sleep = getopt 'max_sleep' , @klass.max_sleep
@suspend = getopt 'suspend' , @klass.suspend
@timeout = getopt 'timeout' , @klass.timeout
@refresh = getopt 'refresh' , @klass.refresh
@dont_clean = getopt 'dont_clean' , @klass.dont_clean
@poll_retries = getopt 'poll_retries' , @klass.poll_retries
@poll_max_sleep = getopt 'poll_max_sleep' , @klass.poll_max_sleep
@dont_sweep = getopt 'dont_sweep' , @klass.dont_sweep
@dont_use_lock_id = getopt 'dont_use_lock_id' , @klass.dont_use_lock_id
@debug = getopt 'debug' , @klass.debug
@sleep_cycle = SleepCycle.new @min_sleep, @max_sleep, @sleep_inc
@clean = @dont_clean ? nil : lambda{ File.unlink @path rescue nil }
@dirname = File.dirname @path
@basename = File.basename @path
@thief = false
@locked = false
@refrsher = nil
lock(&block) if block
end