class PhusionPassenger::AnalyticsLogger::Lock

def initialize(mutex)

def initialize(mutex)
	@mutex = mutex
	@locked = false
end

def lock

def lock
	raise if @locked
	@mutex.lock
	@locked = true
end

def reset(mutex, lock_now = true)

def reset(mutex, lock_now = true)
	unlock if @locked
	@mutex = mutex
	lock if lock_now
end

def synchronize

def synchronize
	lock if !@locked
	begin
		yield(self)
	ensure
		unlock if @locked
	end
end

def unlock

def unlock
	raise if !@locked
	@mutex.unlock
	@locked = false
end