Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait IntermittentlyAvailableResource
- trait AlwaysAvailableResource
- trait Transactional
- trait CleanupAfter
- sealed abstract class TransactionResults[A](val result: A)
- class Something {
- def grabItemFromQueue: Future[Item] = ...
- def ifNoResourceAvailable = ...
- def queueItemCleanup(item: Item) = ....
- def queueItemTransactionCommit(item: Item) = /* delete from queue*/
- val QueueGrabber grabs an IntermittentlyAvailableResource and performs an operation with Transactional and CleanupAfter ...
- (ifResourceNotAvailable execute ifResourceNotAvailable)(cleanup execute queueItemCleanup)(commit execute queueItemTransaction)
- def something = {
- QueueGrabber.with{
- resource =>
- //operate on resource without worrying about cleanup, commit, availability, etc
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement