Module: Rex::Ref

Included in:
Service
Defined in:
lib/rex/sync/ref.rb

Overview

This module provides a uniform reference counted interface for classes to use.

Instance Method Summary collapse

Instance Method Details

#cleanupObject

Called to clean up resources once the ref count drops to zero.



54
55
# File 'lib/rex/sync/ref.rb', line 54

def cleanup
end

#derefObject

Decrements the total number of references. If the reference count reaches zero, true is returned. Otherwise, false is returned.



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rex/sync/ref.rb', line 39

def deref
  @_references_mutex.synchronize {
    if ((@_references -= 1) == 0)
      cleanup

      true
    else
      false
    end
  }
end

#refObject

Increments the total number of references.



27
28
29
30
31
32
33
# File 'lib/rex/sync/ref.rb', line 27

def ref
  @_references_mutex.synchronize {
    @_references += 1
  }

  self
end

#refinitObject

Initializes the reference count to one.



17
18
19
20
21
22
# File 'lib/rex/sync/ref.rb', line 17

def refinit
  @_references       = 1
  @_references_mutex = Mutex.new

  self
end