Add NdnApplication class to handle start and stop
refs: #2909
Change-Id: Ibe5760b155e0edf2227d2d7146f8b6552149a63b
diff --git a/ndn/ndn_application.py b/ndn/ndn_application.py
new file mode 100644
index 0000000..665a0ba
--- /dev/null
+++ b/ndn/ndn_application.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+import os
+
+class NdnApplication:
+ def __init__(self, node):
+ self.node = node
+ self.isRunning = False
+
+ def start(self, command):
+ if self.isRunning is True:
+ try:
+ os.kill(int(self.processId), 0)
+ except OSError:
+ self.isRunning = False
+
+ if self.isRunning is False:
+ self.node.cmd(command)
+ self.processId = self.node.cmd("echo $!")[:-1]
+
+ self.isRunning = True
+
+ def stop(self):
+ if self.isRunning:
+ self.node.cmd("sudo kill %s" % self.processId)
+
+ self.isRunning = False
diff --git a/ndn/nfd.py b/ndn/nfd.py
index 817e8d9..4caceac 100644
--- a/ndn/nfd.py
+++ b/ndn/nfd.py
@@ -1,14 +1,14 @@
#!/usr/bin/env python
import time
+from ndn.ndn_application import NdnApplication
-class Nfd:
+class Nfd(NdnApplication):
STRATEGY_BEST_ROUTE_V3 = "best-route/%FD%03"
STRATEGY_NCC = "ncc"
def __init__(self, node):
- self.node = node
- self.isRunning = False
+ NdnApplication.__init__(self, node)
self.logLevel = node.params["params"].get("nfd-log-level", "NONE")
@@ -43,25 +43,8 @@
node.cmd("export HOME=%s" % self.homeFolder)
def start(self):
- if self.isRunning is True:
- try:
- os.kill(int(self.processId), 0)
- except OSError:
- self.isRunning = False
-
- if self.isRunning is False:
- self.node.cmd("sudo nfd --config %s 2>> %s &" % (self.confFile, self.logFile))
- self.processId = self.node.cmd("echo $!")[:-1]
-
- time.sleep(2)
-
- self.isRunning = True
-
- def stop(self):
- if self.isRunning is True:
- self.node.cmd("sudo kill %s" % self.processId)
-
- self.isRunning = False
+ NdnApplication.start(self, "sudo nfd --config %s 2>> %s &" % (self.confFile, self.logFile))
+ time.sleep(2)
def setStrategy(self, name, strategy):
self.node.cmd("nfdc set-strategy %s ndn:/localhost/nfd/strategy/%s" % (name, strategy))
diff --git a/ndn/nlsr.py b/ndn/nlsr.py
index 1807374..d1e1d3c 100644
--- a/ndn/nlsr.py
+++ b/ndn/nlsr.py
@@ -1,12 +1,11 @@
#!/usr/bin/env python
-import os
+from ndn.ndn_application import NdnApplication
-class Nlsr:
+class Nlsr(NdnApplication):
def __init__(self, node):
- self.node = node
+ NdnApplication.__init__(self, node)
self.routerName = "/%sC1.Router/cs/%s" % ('%', node.name)
self.confFile = "/tmp/%s/nlsr.conf" % node.name
- self.isRunning = False
# Make directory for log file
self.logDir = "/tmp/%s/log" % node.name
@@ -19,23 +18,7 @@
node.cmd("sudo sed -i 's|prefix .*netlab|prefix /ndn/edu/%s|g' %s" % (node.name, self.confFile))
def start(self):
- if self.isRunning is True:
- try:
- os.kill(int(self.processId), 0)
- except OSError:
- self.isRunning = False
-
- if self.isRunning is False:
- self.node.cmd("nlsr -d")
- self.processId = self.node.cmd("echo $!")[:-1]
-
- self.isRunning = True
-
- def stop(self):
- if self.isRunning:
- self.node.cmd("sudo kill %s" % self.processId)
-
- self.isRunning = False
+ NdnApplication.start(self, "nlsr -d")
class NlsrConfigGenerator: