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
TheLeaseCleaner
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 theCleaner
notification 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 theLeaseCleaner
object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private 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
issue(Contract<T> contract)
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
revoke(Contract<T> contract)
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 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 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 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 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
private void clean() throws java.lang.Exception
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:
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.
-
-