feat (ui): synchronisation tasks
This commit is contained in:
14
client.py
14
client.py
@ -16,14 +16,10 @@ from .libs import dump_anything, umsgpack, zmq
|
|||||||
# import zmq
|
# import zmq
|
||||||
lock = threading.Lock()
|
lock = threading.Lock()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONNECT_TIMEOUT = 2
|
CONNECT_TIMEOUT = 2
|
||||||
WAITING_TIME = 0.001
|
WAITING_TIME = 0.001
|
||||||
SERVER_MAX = 1
|
SERVER_MAX = 1
|
||||||
@ -34,6 +30,7 @@ class State(Enum):
|
|||||||
INITIAL = 1
|
INITIAL = 1
|
||||||
SYNCING = 2
|
SYNCING = 2
|
||||||
ACTIVE = 3
|
ACTIVE = 3
|
||||||
|
WORKING = 4
|
||||||
|
|
||||||
|
|
||||||
def zpipe(ctx):
|
def zpipe(ctx):
|
||||||
@ -58,6 +55,8 @@ class RCFClient(object):
|
|||||||
pipe = None
|
pipe = None
|
||||||
net_agent = None
|
net_agent = None
|
||||||
store = None
|
store = None
|
||||||
|
active_tasks = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.ctx = zmq.Context()
|
self.ctx = zmq.Context()
|
||||||
self.pipe, peer = zpipe(self.ctx)
|
self.pipe, peer = zpipe(self.ctx)
|
||||||
@ -89,6 +88,10 @@ class RCFClient(object):
|
|||||||
self.watchdog_agent.daemon = True
|
self.watchdog_agent.daemon = True
|
||||||
self.watchdog_agent.start()
|
self.watchdog_agent.start()
|
||||||
|
|
||||||
|
# Status
|
||||||
|
self.active_tasks = 0
|
||||||
|
|
||||||
|
|
||||||
def connect(self, id, address, port):
|
def connect(self, id, address, port):
|
||||||
self.pipe.send_multipart([b"CONNECT", (id.encode() if isinstance(
|
self.pipe.send_multipart([b"CONNECT", (id.encode() if isinstance(
|
||||||
id, str) else id), (address.encode() if isinstance(
|
id, str) else id), (address.encode() if isinstance(
|
||||||
@ -139,7 +142,8 @@ class RCFClient(object):
|
|||||||
|
|
||||||
|
|
||||||
def is_busy(self):
|
def is_busy(self):
|
||||||
if self.serial_feed.qsize() == 0 and self.serial_product.qsize() == 0:
|
self.active_tasks = self.serial_feed.qsize() + self.serial_product.qsize()
|
||||||
|
if self.active_tasks == 0:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
19
ui.py
19
ui.py
@ -28,7 +28,7 @@ class SessionSettingsPanel(bpy.types.Panel):
|
|||||||
row = layout.row()
|
row = layout.row()
|
||||||
box = row.box()
|
box = row.box()
|
||||||
row = box.row()
|
row = box.row()
|
||||||
row.label(text="USER", icon='GHOST_ENABLED')
|
row.label(text="USER", icon='TRIA_RIGHT')
|
||||||
row = box.row()
|
row = box.row()
|
||||||
row.prop(scene.session_settings, "username", text="id")
|
row.prop(scene.session_settings, "username", text="id")
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ class SessionSettingsPanel(bpy.types.Panel):
|
|||||||
row = layout.row()
|
row = layout.row()
|
||||||
box = row.box()
|
box = row.box()
|
||||||
row = box.row()
|
row = box.row()
|
||||||
row.label(text="NETWORK", icon = "TOOL_SETTINGS")
|
row.label(text="NETWORK", icon = "TRIA_RIGHT")
|
||||||
|
|
||||||
row = box.row()
|
row = box.row()
|
||||||
row.label(text="draw overlay:")
|
row.label(text="draw overlay:")
|
||||||
@ -78,6 +78,7 @@ class SessionSettingsPanel(bpy.types.Panel):
|
|||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("session.stop", icon='QUIT', text="Exit")
|
row.operator("session.stop", icon='QUIT', text="Exit")
|
||||||
|
row = layout.row()
|
||||||
|
|
||||||
# row = layout.row()
|
# row = layout.row()
|
||||||
# row.label(text="serial ",icon="KEYTYPE_EXTREME_VEC")
|
# row.label(text="serial ",icon="KEYTYPE_EXTREME_VEC")
|
||||||
@ -85,11 +86,21 @@ class SessionSettingsPanel(bpy.types.Panel):
|
|||||||
# row.label(text="serial ",icon="KEYTYPE_BREAKDOWN_VEC")
|
# row.label(text="serial ",icon="KEYTYPE_BREAKDOWN_VEC")
|
||||||
# row = layout.row()
|
# row = layout.row()
|
||||||
# row.label(text="serial ",icon="KEYTYPE_JITTER_VEC")
|
# row.label(text="serial ",icon="KEYTYPE_JITTER_VEC")
|
||||||
elif operators.client_state is 2:
|
|
||||||
row.label(text="connecting...")
|
box = row.box()
|
||||||
|
row = box.row()
|
||||||
|
row.label(text="", icon='INFO')
|
||||||
|
row = box.row()
|
||||||
|
row.label(text="Sync tasks: {}".format(operators.client_instance.active_tasks))
|
||||||
|
else:
|
||||||
|
status = "connecting..."
|
||||||
|
if net_settings.is_admin:
|
||||||
|
status = "init scene...({} tasks remaining)".format(operators.client_instance.active_tasks)
|
||||||
|
row.label(text=status)
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("session.stop", icon='QUIT', text="CANCEL")
|
row.operator("session.stop", icon='QUIT', text="CANCEL")
|
||||||
|
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user