blob: 29a843895d058a8470565df6848d58ba78e7ea2e [file] [log] [blame]
alshabib92c65ad2014-10-08 21:56:05 -07001package org.onlab.onos.impl;
2
3import java.io.File;
4import java.util.List;
5import java.util.Map;
6import java.util.concurrent.ConcurrentHashMap;
7import java.util.concurrent.atomic.AtomicInteger;
8
9import org.apache.felix.scr.annotations.Activate;
10import org.apache.felix.scr.annotations.Component;
11import org.apache.felix.scr.annotations.Service;
12import org.onlab.onos.ApplicationId;
13import org.onlab.onos.CoreService;
14import org.onlab.onos.Version;
15import org.onlab.util.Tools;
16
17
18/**
19 * Core service implementation.
20 */
21@Component
22@Service
23public class CoreManager implements CoreService {
24
25 private static final AtomicInteger ID_DISPENSER = new AtomicInteger(1);
26 private static final File VERSION_FILE = new File("../VERSION");
27 private static Version version = Version.version("1.0.0-SNAPSHOT");
28
29 private final Map<Short, DefaultApplicationId> ids = new ConcurrentHashMap<>();
30
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) {
48 return ids.get(id);
49 }
50
51 @Override
52 public ApplicationId registerApplication(String name) {
53 return new DefaultApplicationId((short) ID_DISPENSER.getAndIncrement(), name);
54 }
55
56}