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:
Runnable
The
LeaseCleaner
provides 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 the Cleaner
notification method. This will
wait until the current clean operation has completed before it
attempts to clean the next contract.-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
clean()
This method is used to take the lease from the queue and give it to the cleaner for expiry.void
close()
Here we shutdown the lease maintainer so that the thread will die.boolean
This method will establish a contract for a given resource.private void
purge()
Here all of the existing contracts are purged when the invoker is closed.boolean
This revokes a contract that has previously been issued.void
run()
This acquires expired lease contracts from the queue once the expiry duration has passed.
-
Field Details
-
queue
This is used to queue contracts that are to be cleaned. -
cleaner
This is the cleaner that is invoked to clean contracts.
-
-
Constructor Details
-
LeaseCleaner
Constructor for theLeaseCleaner
object. This can be used to issue, update, and expire leases. When a lease expires notification is sent to theCleaner
object provided. This allows an implementation independent means to clean up once a specific lease has expired.- Parameters:
cleaner
- this will receive expiration notifications
-
-
Method Details
-
revoke
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
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 issuedCleaner
implementation, 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 theCleaner
object 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
This 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:
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.
-