blob: c1232739d58ce103359ee92169d767fcd9a9232a [file] [log] [blame]
Brian O'Connorabafb502014-12-02 22:26:20 -08001package org.onosproject.store.service;
Madan Jampanif73fb042014-11-11 10:49:05 -08002
Madan Jampani32fe7802014-11-11 11:16:47 -08003/**
4 * Service interface for mutual exclusion primitives.
5 */
Madan Jampanif73fb042014-11-11 10:49:05 -08006public interface LockService {
7
8 /**
Madan Jampani32fe7802014-11-11 11:16:47 -08009 * Creates a new lock instance.
Madan Jampanif73fb042014-11-11 10:49:05 -080010 * A successful return from this method does not mean the resource guarded by the path is locked.
Madan Jampani32fe7802014-11-11 11:16:47 -080011 * The caller is expected to call Lock.lock() to acquire the lock.
Madan Jampanif73fb042014-11-11 10:49:05 -080012 * @param path unique lock name.
Madan Jampani32fe7802014-11-11 11:16:47 -080013 * @return a Lock instance that can be used to acquire the lock.
Madan Jampanif73fb042014-11-11 10:49:05 -080014 */
15 Lock create(String path);
16
17 /**
18 * Adds a listener to be notified of lock events.
19 * @param listener listener to be added.
20 */
21 void addListener(LockEventListener listener);
22
23 /**
24 * Removes a listener that was previously added.
25 * @param listener listener to be removed.
26 */
27 void removeListener(LockEventListener listener);
Brian O'Connorabafb502014-12-02 22:26:20 -080028}