diff options
author | TinWoodman92 <chrhodgden@gmail.com> | 2023-05-30 20:49:17 -0500 |
---|---|---|
committer | TinWoodman92 <chrhodgden@gmail.com> | 2023-05-30 20:49:17 -0500 |
commit | b9244a0e12333f441947cb1f31ad07efe9c897af (patch) | |
tree | 7346906284c8814ff670c817dd63227cc4df2345 | |
parent | 5f1696719ec36979005f5792a4049b30e5a7d9b2 (diff) |
WORK-IN-PROGRESS: Converting launcher and Python source file to interact via sockets.
-rw-r--r-- | launcher.py | 69 | ||||
-rw-r--r-- | source_file.py | 35 |
2 files changed, 97 insertions, 7 deletions
diff --git a/launcher.py b/launcher.py index 4798429..23e3000 100644 --- a/launcher.py +++ b/launcher.py @@ -1,25 +1,82 @@ import os -from subprocess import * +import subprocess import threading +import socket + +HEADER = 64 +PORT = 6011 +SERVER = 'localhost' +ADDR = (SERVER, PORT) +FORMAT = 'utf-8' +DISCONNECT_MESSAGE = b'!DISSCONNECT' + +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server.bind(ADDR) + +def establish_connection(mutable = {}): + server.listen() + conn, addr = server.accept() + mutable['conn'] = conn + mutable['addr'] = addr + return conn, addr + +def send_msg(conn, msg): + data = bytes(msg, FORMAT) + data += b' ' * (HEADER - len(data)) + conn.send(data) + +def recv_msg(conn): + msg = conn.recv(HEADER).strip() + return msg + +def terminate_connection(conn): + conn.close() def execute_source_file(file_name): ext = file_name.split('.') if ext[1] == 'py': cmd = 'Python' elif ext[1] == 'r': cmd = 'RScript' - run( + + subprocess.run( f'{cmd} {file_name}', cwd = os.getcwd(), start_new_session = True ) -src_fil_py = threading.Thread(target=execute_source_file, args=['source_file.py']) -src_fil_r = threading.Thread(target=execute_source_file, args=['source_file.r']) +def launch_and_connect(file_name, CONN): + mutable = {} + connect_ = threading.Thread(target=establish_connection, args=[mutable]) + launch_ = threading.Thread(target=execute_source_file, args=[file_name]) -src_fil_r.start() + connect_.start() + launch_.start() + connect_.join() + + conn = mutable['conn'] + addr = mutable['addr'] + CONN['conn'] = mutable['conn'] + CONN['addr'] = mutable['addr'] + return conn, addr + +def disconnect_and_close(file_name): + pass + +CONN_PY = {} +src_fil_py = threading.Thread(target=launch_and_connect, args=['source_file.py', CONN_PY]) +#src_fil_r = threading.Thread(target=execute_source_file, args=['source_file.r']) + +#src_fil_r.start() src_fil_py.start() -src_fil_r.join() +#src_fil_r.join() src_fil_py.join() +conn_py = CONN_PY['conn'] + +msg = recv_msg(conn_py) +print(msg) + +msg = "goodbye" +send_msg(conn_py, msg) print("end launcher") diff --git a/source_file.py b/source_file.py index d55741a..9d10aed 100644 --- a/source_file.py +++ b/source_file.py @@ -1,3 +1,15 @@ +import socket + +HEADER = 64 +PORT = 6011 +SERVER = 'localhost' +ADDR = (SERVER, PORT) +FORMAT = 'utf-8' +DISCONNECT_MESSAGE = b'!DISSCONNECT' + +CONN = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +CONN.connect(ADDR) + def display_msg(msg): print( '\033[93m', @@ -6,6 +18,27 @@ def display_msg(msg): end='\033[0m\n' ) -msg = "hello world - Python" +def send_msg(conn, msg): + data = bytes(msg, FORMAT) + data += b' ' * (HEADER - len(data)) + conn.send(data) + +def recv_msg(conn): + msg = conn.recv(HEADER).strip() + msg = msg.decode(FORMAT) + return msg + +def terminate_connection(conn): + conn.close() + +msg = "Initializing Client - Python" display_msg(msg) + +msg = "Initialized Client - Python" +send_msg(CONN, msg) + +msg = recv_msg(CONN) +display_msg(msg) + +terminate_connection(CONN)
\ No newline at end of file |