diff --git a/net_components.py b/net_components.py index fc24ff4..a844a9c 100644 --- a/net_components.py +++ b/net_components.py @@ -10,87 +10,6 @@ import random logger = logging.getLogger(__name__) logging.basicConfig(level=logging.DEBUG) - -class Session(): - def __init__(self, host='127.0.0.1', port=5555, is_hosting=False): - self.host = host - self.port = port - self.is_running = False - # init zmq context - self.context = zmq.Context() - self.socket = None - - self.msg = [] - - # self.listen.add_done_callback(self.close_success()) - - # TODO: Add a kill signal to destroy clients session - # TODO: Add a join method - # TODO: Add a create session method - def join(self): - logger.info("joinning {}:{}".format(self.host, self.port)) - try: - self.socket = self.context.socket(zmq.DEALER) - self.socket.connect("tcp://localhost:5555") - self.listen = asyncio.ensure_future(self.listen()) - - self.send("XXX connected") - return True - - except zmq.ZMQError: - logger.error("Error while joining {}:{}".format( - self.host, self.port)) - - return False - - # TODO: Find better names - def create(self): - logger.info("Creating session") - try: - self.socket = self.context.socket(zmq.ROUTER) - self.socket.bind("tcp://*:5555") - - self.listen = asyncio.ensure_future(self.listen()) - return True - except zmq.ZMQError: - logger.error("Error while creating session: ", zmq.ZMQError) - - return False - - async def listen(self): - logger.info("Listening on {}:{}".format(self.host, self.port)) - - self.is_running = True - while True: - # Ungly blender workaround to prevent blocking... - await asyncio.sleep(0.016) - try: - buffer = self.socket.recv(zmq.NOBLOCK) - - message = umsgpack.unpackb(buffer) - if message is not 0: - self.socket.send(umsgpack.packb(0)) - self.msg.append() - except zmq.ZMQError: - pass - - def send(self, msg): - logger.info("Sending {} to {}:{} ".format(msg, self.host, self.port)) - self.msg.append(msg) - bin = umsgpack.packb(msg) - self.socket.send(bin) - - async def close_success(self): - self.is_running = False - - def close(self): - logger.info("Closing session") - self.socket.close() - self.listen.cancel() - del self.listen - self.is_running = False - - class Client(): def __init__(self, context=zmq.Context(), id="default", recv_callback=None): diff --git a/net_operators.py b/net_operators.py index 2f6fcde..a1b0452 100644 --- a/net_operators.py +++ b/net_operators.py @@ -5,91 +5,10 @@ import logging logger = logging.getLogger(__name__) -session = None client = None server = None context = None -# SESSION Operators - - -class join(bpy.types.Operator): - bl_idname = "session.join" - bl_label = "join" - bl_description = "Connect to a net session" - bl_options = {"REGISTER"} - - @classmethod - def poll(cls, context): - return True - - def execute(self, context): - # global session - - if session.join(): - bpy.ops.asyncio.loop() - else: - print('fail to create session, avorting loop') - return {"FINISHED"} - - -class create(bpy.types.Operator): - bl_idname = "session.create" - bl_label = "create" - bl_description = "create to a net session" - bl_options = {"REGISTER"} - - @classmethod - def poll(cls, context): - return True - - def execute(self, context): - global session - - if session.create(): - bpy.ops.asyncio.loop() - else: - print('fail to create session, avorting loop') - - return {"FINISHED"} - - -class send(bpy.types.Operator): - bl_idname = "session.send" - bl_label = "Send" - bl_description = "Connect to a net session" - bl_options = {"REGISTER"} - - message: bpy.props.StringProperty(default="Hi") - - @classmethod - def poll(cls, context): - return True - - def execute(self, context): - global session - - session.send(self.message) - return {"FINISHED"} - - -class close(bpy.types.Operator): - bl_idname = "session.close" - bl_label = "Close session" - bl_description = "Connect to a net session" - bl_options = {"REGISTER"} - - @classmethod - def poll(cls, context): - return True - - def execute(self, context): - global session - - session.close() - bpy.ops.asyncio.stop() - return {"FINISHED"} - # CLIENT-SERVER def refresh_window(): import bpy