summaryrefslogtreecommitdiff
path: root/rpc/rpc.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/rpc.py')
-rw-r--r--rpc/rpc.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/rpc/rpc.py b/rpc/rpc.py
new file mode 100644
index 0000000..461ba21
--- /dev/null
+++ b/rpc/rpc.py
@@ -0,0 +1,63 @@
+from dotenv import load_dotenv, find_dotenv
+import os
+import zerorpc
+import gevent
+import time
+
+load_dotenv(find_dotenv())
+
+class CortexRPC(object):
+ def __init__(self, fn):
+ super().__init__()
+ self._listener = fn
+ self.connect()
+
+ def connect(self):
+ print("Connecting to RPC on port {}".format(os.getenv('RPC_PORT')))
+ self.rpc = zerorpc.Server(self)
+ self.rpc.bind("tcp://127.0.0.1:" + os.getenv('RPC_PORT'))
+ gevent.spawn(self.connected)
+ self.rpc.run()
+
+ def connected(self):
+ print("RPC running on port {}".format(os.getenv('RPC_PORT')))
+ print("Connecting to Relay on port {}".format(os.getenv('RELAY_PORT')))
+ self.relay = zerorpc.Client()
+ self.relay.connect("tcp://127.0.0.1:" + os.getenv('RELAY_PORT'))
+ val = None
+ try:
+ val = self.relay.connected("rpc")
+ print("rpc connected...".format(val))
+ except zerorpc.TimeoutExpired:
+ print("rpc timeout :(")
+ # print("defer sending a file...")
+ # gevent.sleep(2)
+ # self.send_file("test.png")
+ return val
+
+ def send_param(self, key, value):
+ print("aloha. {}: {}".format(key, value))
+ if self._listener is not None:
+ self._listener(key, value)
+ else:
+ print("No listener provided to CortexRPC")
+ return "ok"
+
+ def get_params(self):
+ print("get params call received")
+ return "lmao ok"
+
+ def send_frame(self, frame):
+ if self.relay is not None:
+ print("sending a frame...")
+ frame = '01234567' * 8 * 8 * 8 * 8 * 2
+ self.relay.send_frame('frame_00000.png', frame)
+ else:
+ print("Relay not ready...")
+
+if __name__ == '__main__':
+ def log_param(key, value):
+ print("log param. {}: {}".format(key, value))
+
+ # this will block
+ rpc = CortexRPC(log_param)