clean: Remove old session related classes
This commit is contained in:
@ -10,87 +10,6 @@ import random
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
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():
|
class Client():
|
||||||
def __init__(self, context=zmq.Context(), id="default", recv_callback=None):
|
def __init__(self, context=zmq.Context(), id="default", recv_callback=None):
|
||||||
|
|
||||||
|
@ -5,91 +5,10 @@ import logging
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
session = None
|
|
||||||
client = None
|
client = None
|
||||||
server = None
|
server = None
|
||||||
context = 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
|
# CLIENT-SERVER
|
||||||
def refresh_window():
|
def refresh_window():
|
||||||
import bpy
|
import bpy
|
||||||
|
Reference in New Issue
Block a user