-
Notifications
You must be signed in to change notification settings - Fork 0
/
ipc.py
53 lines (47 loc) · 1.53 KB
/
ipc.py
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
import sys, os, constants, traceback
port = constants.PORT
def set_port(p):
global port
port = p
def err():
print("IPC ERROR")
write("ERR", 100, False)
os._exit(constants.ERROR_IPC)
if constants.DEBUG_IPC:
def read():
i = input("READ:")
if i == "ERR":
err()
return i
def write(msg):
print(f"WRITE:{msg}")
else:
import http.server as server, http.client as client
def read():
data = [None]
class RequestHandler(server.BaseHTTPRequestHandler):
def do_POST(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
content_length = int(self.headers['Content-Length'])
data[0] = self.rfile.read(content_length)
self.wfile.write(b"")
def log_message(self, format: str, *args) -> None:
return
svr = server.HTTPServer(('localhost', int(port)), RequestHandler)
svr.handle_request()
svr.server_close()
return data[0].decode("utf-8")
def write(msg, timeout=1, retry=True):
while True:
try:
c = client.HTTPConnection(f"localhost:{port}", timeout=timeout)
c.request("POST", "/", msg.encode("utf-8"))
r = c.getresponse()
c.close()
if r.getcode() == 200:
break
except Exception as e:
if not retry:
break