lib/async/container/keyed.rb in async-container-0.16.6 vs lib/async/container/keyed.rb in async-container-0.16.7
- old
+ new
@@ -20,31 +20,43 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
module Async
module Container
+ # Tracks a key/value pair such that unmarked keys can be identified and cleaned up.
+ # This helps implement persistent processes that start up child processes per directory or configuration file. If those directories and/or configuration files are removed, the child process can then be cleaned up automatically, because those key/value pairs will not be marked when reloading the container.
class Keyed
def initialize(key, value)
@key = key
@value = value
@marked = true
end
+ # The key. Normally a symbol or a file-system path.
+ # @attribute [Object]
attr :key
+
+ # The value. Normally a child instance of some sort.
+ # @attribute [Object]
attr :value
+ # Has the instance been marked?
+ # @returns [Boolean]
def marked?
@marked
end
+ # Mark the instance. This will indiciate that the value is still in use/active.
def mark!
@marked = true
end
+ # Clear the instance. This is normally done before reloading a container.
def clear!
@marked = false
end
+ # Stop the instance if it was not marked.
def stop?
unless @marked
@value.stop
return true
end