blob: edfc080e06de80d6a8f642ab4eb4e72fa4534875 [file] [log] [blame]
alshabib92c65ad2014-10-08 21:56:05 -07001package org.onlab.onos.impl;
2
alshabib92c65ad2014-10-08 21:56:05 -07003import org.apache.felix.scr.annotations.Activate;
4import org.apache.felix.scr.annotations.Component;
5import org.apache.felix.scr.annotations.Service;
6import org.onlab.onos.ApplicationId;
7import org.onlab.onos.CoreService;
8import org.onlab.onos.Version;
9import org.onlab.util.Tools;
10
toma6897792014-10-08 22:21:05 -070011import java.io.File;
12import java.util.List;
13import java.util.Map;
14import java.util.concurrent.ConcurrentHashMap;
15import java.util.concurrent.atomic.AtomicInteger;
alshabib92c65ad2014-10-08 21:56:05 -070016
17/**
18 * Core service implementation.
19 */
20@Component
21@Service
22public class CoreManager implements CoreService {
23
24 private static final AtomicInteger ID_DISPENSER = new AtomicInteger(1);
toma6897792014-10-08 22:21:05 -070025
alshabib92c65ad2014-10-08 21:56:05 -070026 private static final File VERSION_FILE = new File("../VERSION");
27 private static Version version = Version.version("1.0.0-SNAPSHOT");
28
toma6897792014-10-08 22:21:05 -070029 private final Map<Short, DefaultApplicationId> appIds = new ConcurrentHashMap<>();
alshabib92c65ad2014-10-08 21:56:05 -070030
31 // TODO: work in progress
32
33 @Activate
34 public void activate() {
35 List<String> versionLines = Tools.slurp(VERSION_FILE);
36 if (versionLines != null && !versionLines.isEmpty()) {
37 version = Version.version(versionLines.get(0));
38 }
39 }
40
41 @Override
42 public Version version() {
43 return version;
44 }
45
46 @Override
47 public ApplicationId getAppId(Short id) {
toma6897792014-10-08 22:21:05 -070048 return appIds.get(id);
alshabib92c65ad2014-10-08 21:56:05 -070049 }
50
51 @Override
52 public ApplicationId registerApplication(String name) {
toma6897792014-10-08 22:21:05 -070053 short id = (short) ID_DISPENSER.getAndIncrement();
54 DefaultApplicationId appId = new DefaultApplicationId(id, name);
55 appIds.put(id, appId);
56 return appId;
alshabib92c65ad2014-10-08 21:56:05 -070057 }
58
59}