Add NdnApplication class to handle start and stop

refs: #2909

Change-Id: Ibe5760b155e0edf2227d2d7146f8b6552149a63b
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))