ccf0f3266903c32c46d4448490ae3396f57c9a60
[onosfw.git] /
1 package org.onosproject.store.core.impl;
2
3 import static org.slf4j.LoggerFactory.getLogger;
4
5 import org.apache.felix.scr.annotations.Activate;
6 import org.apache.felix.scr.annotations.Component;
7 import org.apache.felix.scr.annotations.Deactivate;
8 import org.apache.felix.scr.annotations.Reference;
9 import org.apache.felix.scr.annotations.ReferenceCardinality;
10 import org.apache.felix.scr.annotations.Service;
11 import org.onosproject.store.Timestamp;
12 import org.onosproject.store.impl.LogicalTimestamp;
13 import org.onosproject.store.service.AtomicCounter;
14 import org.onosproject.store.service.LogicalClockService;
15 import org.onosproject.store.service.StorageService;
16 import org.slf4j.Logger;
17
18 /**
19  * LogicalClockService implementation based on a AtomicCounter.
20  */
21 @Component(immediate = true, enabled = true)
22 @Service
23 public class LogicalClockManager implements LogicalClockService {
24
25     private final Logger log = getLogger(getClass());
26
27     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
28     protected StorageService storageService;
29
30     private static final String SYSTEM_LOGICAL_CLOCK_COUNTER_NAME = "sys-clock-counter";
31     private AtomicCounter atomicCounter;
32
33     @Activate
34     public void activate() {
35         atomicCounter = storageService.atomicCounterBuilder()
36                                       .withName(SYSTEM_LOGICAL_CLOCK_COUNTER_NAME)
37                                       .withPartitionsDisabled()
38                                       .build();
39         log.info("Started");
40     }
41
42     @Deactivate
43     public void deactivate() {
44         log.info("Stopped");
45     }
46
47     @Override
48     public Timestamp getTimestamp() {
49         return new LogicalTimestamp(atomicCounter.incrementAndGet());
50     }
51 }