Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python
import roslib; roslib.load_manifest('dynamic_graph_bridge')
import rospy
import dynamic_graph_bridge.srv
import sys
import code
from code import InteractiveConsole
import readline
class RosShell(InteractiveConsole):
def __init__(self):
self.cache = ""
InteractiveConsole.__init__(self)
rospy.loginfo('waiting for service...')
rospy.wait_for_service('run_command')
self.client = rospy.ServiceProxy(
'run_command', dynamic_graph_bridge.srv.RunCommand, True)
def runcode(self, code):
source = self.cache[:-1]
self.cache = ""
if source != "":
try:
if not self.client:
print("Connection to remote server lost. Reconnecting...")
self.client = rospy.ServiceProxy(
'run_command', dynamic_graph_bridge.srv.RunCommand, True)
return
response = self.client(str(source))
if response.stdout != "":
print response.stdout[:-1]
if response.stderr != "":
print response.stderr[:-1]
elif response.result != "None":
print response.result
except rospy.ServiceException, e:
print("Connection to remote server lost. Reconnecting...")
self.client = rospy.ServiceProxy(
'run_command', dynamic_graph_bridge.srv.RunCommand, True)
def push(self,line):
self.cache += line + "\n"
return InteractiveConsole.push(self,line)
if __name__ == '__main__':
import optparse
manifest = roslib.manifest.load_manifest('dynamic_graph_bridge')
parser = optparse.OptionParser(
usage='\n\t%prog [options]',
version='%%prog %s' % manifest.version)
(options, args) = parser.parse_args(sys.argv[1:])
sh = RosShell()
if args[:]:
infile = args[0]
source = open(infile).read()
if not sh.client:
print("Connection to remote server has been lost.")
sys.exit(1)
response = sh.client(str(source))
if response.stdout != "":
print response.stdout[:-1]
if response.stderr != "":
print response.stderr[:-1]
elif response.result != "None":
print response.result
else:
sh.interact("Interacting with remote server.")