blob: 79784b72e762dd5fd8fc9823626a17921bcc2560 [file] [log] [blame]
alshabibab984662014-12-04 18:56:18 -08001/*
2 * Copyright 2014 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.store.service;
Madan Jampanif73fb042014-11-11 10:49:05 -080017
Madan Jampani32fe7802014-11-11 11:16:47 -080018/**
19 * Service interface for mutual exclusion primitives.
20 */
Madan Jampanif73fb042014-11-11 10:49:05 -080021public interface LockService {
22
23 /**
Madan Jampani32fe7802014-11-11 11:16:47 -080024 * Creates a new lock instance.
Madan Jampanif73fb042014-11-11 10:49:05 -080025 * A successful return from this method does not mean the resource guarded by the path is locked.
Madan Jampani32fe7802014-11-11 11:16:47 -080026 * The caller is expected to call Lock.lock() to acquire the lock.
Madan Jampanif73fb042014-11-11 10:49:05 -080027 * @param path unique lock name.
Madan Jampani32fe7802014-11-11 11:16:47 -080028 * @return a Lock instance that can be used to acquire the lock.
Madan Jampanif73fb042014-11-11 10:49:05 -080029 */
30 Lock create(String path);
31
32 /**
33 * Adds a listener to be notified of lock events.
34 * @param listener listener to be added.
35 */
36 void addListener(LockEventListener listener);
37
38 /**
39 * Removes a listener that was previously added.
40 * @param listener listener to be removed.
41 */
42 void removeListener(LockEventListener listener);
Brian O'Connorabafb502014-12-02 22:26:20 -080043}