"""
This script runs a web server, which provides page with target variables
and their values. Real-time access is used when reading variables via
isystem.connect.
"""
import isystem.connect as ic
import sys
winidea_id = ''
if sys.version[0] == '2':
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
elif sys.version[0] == '3':
from http.server import BaseHTTPRequestHandler, HTTPServer
else:
raise Exception('unknown version')
targetVars = ['main_loop_counter', 'g_char', 'g_int']
def read_vars():
"""
This function builds contents of a web page, which contains table with
variables.
"""
try:
web_str = '<html>\n' + \
'<head><meta http-equiv="refresh" content="3"/>\n' + \
' <style>\n' + \
' table, th {\n' \
' border: 2px solid black;\n' + \
' border-collapse: collapse;\n' + \
' }\n' + \
' table, td {\n' \
' border: 1px solid black;\n' + \
' border-collapse: collapse;\n' + \
' }\n' + \
' th, td {\n' + \
' padding: 5px;\n' + \
' }\n' + \
'</style>\n' + \
'</head><body><code><table><tr><th>Variable</th><th>Value</th></tr>\n'
for var in targetVars:
py_var = debugCtrl.evaluate(ic.IConnectDebug.fRealTime, var)
str_var = py_var.getResult()
web_str += '<tr><td><b>' + var + '</b></td><td>' + str_var + '</td></tr>\n'
web_str += '</table></code></body></html>'
except Exception as ex:
web_str = str(ex)
return web_str
class HttpHandler(BaseHTTPRequestHandler):
def do_GET(self):
"""
This method processes HTTP request. It always returns
the same content, regardless of URL.
"""
try:
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
lines = read_vars()
self.wfile.write(lines.encode('utf-8'))
return
except IOError:
self.send_error(404, 'File Not Found: ' + self.path)
def main():
try:
server = HTTPServer(('', 8080), HttpHandler)
print('Http server is running ...')
server.serve_forever()
except KeyboardInterrupt:
print('Ctrl+C received, terminating the server!')
server.socket.close()
if __name__ == '__main__':
connectionMgr = ic.ConnectionMgr()
connectionMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
debugCtrl = ic.CDebugFacade(connectionMgr)
main()