Package org.simpleframework.common.lease
Class LeaseCleaner<T>
- java.lang.Object
-
- org.simpleframework.common.thread.Daemon
-
- org.simpleframework.common.lease.LeaseCleaner<T>
-
- All Implemented Interfaces:
java.lang.Runnable
class LeaseCleaner<T> extends Daemon
TheLeaseCleanerprovides a means of providing callbacks to clean a leased resource once the contract duration has expired. This will acquire contracts from the queue and invoke theCleanernotification method. This will wait until the current clean operation has completed before it attempts to clean the next contract.
-
-
Constructor Summary
Constructors Constructor Description LeaseCleaner(Cleaner<T> cleaner)Constructor for theLeaseCleanerobject.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidclean()This method is used to take the lease from the queue and give it to the cleaner for expiry.voidclose()Here we shutdown the lease maintainer so that the thread will die.booleanissue(Contract<T> contract)This method will establish a contract for a given resource.private voidpurge()Here all of the existing contracts are purged when the invoker is closed.booleanrevoke(Contract<T> contract)This revokes a contract that has previously been issued.voidrun()This acquires expired lease contracts from the queue once the expiry duration has passed.
-
-
-
Field Detail
-
queue
private final ContractQueue<T> queue
This is used to queue contracts that are to be cleaned.
-
-
Constructor Detail
-
LeaseCleaner
public LeaseCleaner(Cleaner<T> cleaner)
Constructor for theLeaseCleanerobject. This can be used to issue, update, and expire leases. When a lease expires notification is sent to theCleanerobject provided. This allows an implementation independent means to clean up once a specific lease has expired.- Parameters:
cleaner- this will receive expiration notifications
-
-
Method Detail
-
revoke
public boolean revoke(Contract<T> contract) throws LeaseException
This revokes a contract that has previously been issued. This is used when the contract duration has changed so that it can be reissued again with a new duration. This returns true if the contract was still active and false if it did not exist.- Parameters:
contract- this is the contract that contains details- Throws:
LeaseException
-
issue
public boolean issue(Contract<T> contract) throws LeaseException
This method will establish a contract for a given resource. If the contract duration expires before it is renewed then a notification is sent, to the issuedCleanerimplementation, to signify that the resource has expired.- Parameters:
contract- this is the contract that contains details- Throws:
LeaseException
-
run
public void run()
This acquires expired lease contracts from the queue once the expiry duration has passed. This will deliver notification to theCleanerobject once the contract has been taken from the queue. This allows the cleaner to clean up any resources associated with the lease before the next expiration.
-
clean
private void clean() throws java.lang.ExceptionThis method is used to take the lease from the queue and give it to the cleaner for expiry. This effectively waits until the next contract expiry has passed, once it has passed the key for that contract is given to the cleaner to clean up resources.- Throws:
java.lang.Exception
-
purge
private void purge()
Here all of the existing contracts are purged when the invoker is closed. This ensures that each leased resource has a chance to clean up after the lease manager has been closed. All of the contracts are given a zero delay and cleaned immediately such that once this method has finished the queue will be empty.
-
close
public void close()
Here we shutdown the lease maintainer so that the thread will die. Shutting down the maintainer is done by interrupting the thread and setting the dead flag to true. Once this is invoked then the thread will no longer be running for this object.
-
-