1 package org.onap.ccsdk.features.lib.rlock;
3 import java.util.Collection;
4 import java.util.HashSet;
7 public abstract class SynchronizedFunction {
9 private Set<String> synchset;
10 private String lockRequester;
11 private int lockTimeout; // Seconds
12 private LockHelper lockHelper;
14 protected SynchronizedFunction(LockHelper lockHelper, Collection<String> synchset, int lockTimeout) {
15 this.lockHelper = lockHelper;
16 this.synchset = new HashSet<String>(synchset);
17 this.lockRequester = generateLockRequester();
18 this.lockTimeout = lockTimeout;
21 protected abstract void _exec();
24 lockHelper.lock(synchset, lockRequester, lockTimeout);
28 lockHelper.unlock(synchset, true);
32 private static String generateLockRequester() {
33 return "SynchronizedFunction-" + (int) (Math.random() * 1000000);