From e85e9295fb749b1042b15620c6a355ab69101f00 Mon Sep 17 00:00:00 2001
From: Tommy Persson <tommy.persson@liu.se>
Date: Mon, 19 Jan 2015 20:47:35 +0100
Subject: [PATCH] bagserver/client

---
 src/bagserver.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/bagserver.py b/src/bagserver.py
index faa2437..1fe0e36 100755
--- a/src/bagserver.py
+++ b/src/bagserver.py
@@ -1,15 +1,34 @@
 #!/usr/bin/env python
 
+import subprocess
+import sys
+import signal
+import os
+
 import rospy
 
 from lrs_srvs.srv import *
 
+procs = {}
+
 def start_recording(req):
     print "start_recording", req
+    command = "rosbag record -o " + req.uuid
+    print "COMMAND: ", command, " ".join(req.topics)
+    args = ["rosbag", "record", "-o", req.uuid]
+    args += req.topics
+    procs[req.uuid] = subprocess.Popen(args, 0, None, sys.stdout, sys.stdout,
+                                       preexec_fn=os.setsid)
+    print "STARTING: ", procs[req.uuid]
     return BSStartRecordingResponse(True, 0, "")
 
 def stop_recording(req):
     print "stop_recording", req
+    print "STOPPING: ", procs[req.uuid]
+    pid = procs[req.uuid].pid
+#    procs[req.uuid].kill()
+#    procs[req.uuid].send_signal(signal.CTRL_C_EVENT)
+    os.killpg(os.getpgid(pid), signal.SIGINT)
     return BSStopRecordingResponse(True, 0, "")
 
 if __name__ == "__main__":
-- 
GitLab