diff options
Diffstat (limited to 'rpc/rpc.py')
| -rw-r--r-- | rpc/rpc.py | 63 |
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) |
