feat(rcf): append hosting back

This commit is contained in:
Swann
2019-04-08 17:01:02 +02:00
parent c137971606
commit 333f0980bf
5 changed files with 39 additions and 49 deletions

View File

@ -19,6 +19,7 @@ CONNECT_TIMEOUT = 2
WAITING_TIME = 0.001 WAITING_TIME = 0.001
SERVER_MAX = 1 SERVER_MAX = 1
stop = False
def zpipe(ctx): def zpipe(ctx):
"""build inproc pipe for talking to threads """build inproc pipe for talking to threads
@ -161,6 +162,10 @@ class RCFClient(object):
""" """
self.pipe.send_multipart([b"SET", umsgpack.packb(key), umsgpack.packb(value)]) self.pipe.send_multipart([b"SET", umsgpack.packb(key), umsgpack.packb(value)])
def exit(self):
if self.agent.is_alive():
global stop
stop = True
class RCFServer(object): class RCFServer(object):
address = None # Server address address = None # Server address
@ -230,14 +235,16 @@ class RCFClientAgent(object):
def rcf_client_agent(ctx, pipe): def rcf_client_agent(ctx, pipe):
agent = RCFClientAgent(ctx, pipe) agent = RCFClientAgent(ctx, pipe)
server = None server = None
global stop
while True: while True:
if stop:
break
# logger.info("asdasd") # logger.info("asdasd")
poller = zmq.Poller() poller = zmq.Poller()
poller.register(agent.pipe, zmq.POLLIN) poller.register(agent.pipe, zmq.POLLIN)
server_socket = None server_socket = None
if agent.state == State.INITIAL: if agent.state == State.INITIAL:
server = agent.server server = agent.server
if agent.server: if agent.server:
@ -255,7 +262,7 @@ def rcf_client_agent(ctx, pipe):
poller.register(server_socket, zmq.POLLIN) poller.register(server_socket, zmq.POLLIN)
try: try:
items = dict(poller.poll()) items = dict(poller.poll(1))
except: except:
pass pass
@ -277,6 +284,9 @@ def rcf_client_agent(ctx, pipe):
logging.info("I: received from {}:{},{} {}".format(server.address,rcfmsg.body.id, server.port, action)) logging.info("I: received from {}:{},{} {}".format(server.address,rcfmsg.body.id, server.port, action))
else: else:
logger.info("IDLE") logger.info("IDLE")
logger.info("exit thread")
stop = False
# else: else # else: else
# agent.state = State.INITIAL # agent.state = State.INITIAL

View File

@ -5,11 +5,12 @@ import time
import asyncio import asyncio
import queue import queue
from operator import itemgetter from operator import itemgetter
import subprocess
import uuid import uuid
import bgl import bgl
import blf import blf
import bpy import bpy
import os
import gpu import gpu
import mathutils import mathutils
from bpy_extras import view3d_utils from bpy_extras import view3d_utils
@ -685,7 +686,6 @@ class session_join(bpy.types.Operator):
client = net_components.RCFClient() client = net_components.RCFClient()
client.connect("127.0.0.1",5555) client.connect("127.0.0.1",5555)
client.set('key', 1)
# net_settings.is_running = True # net_settings.is_running = True
@ -770,13 +770,13 @@ class session_create(bpy.types.Operator):
global server global server
global client global client
server = net_components.RCFServerAgent() server = subprocess.Popen(['python','server.py'], shell=False, stdout=subprocess.PIPE)
time.sleep(0.1) time.sleep(0.1)
bpy.ops.session.join() bpy.ops.session.join()
if context.scene.session_settings.init_scene: # if context.scene.session_settings.init_scene:
init_scene() # init_scene()
return {"FINISHED"} return {"FINISHED"}
@ -798,17 +798,17 @@ class session_stop(bpy.types.Operator):
net_settings = context.scene.session_settings net_settings = context.scene.session_settings
if server: if server:
server.stop() server.kill()
del server del server
server = None server = None
if client: if client:
client.stop() client.exit()
del client del client
client = None client = None
bpy.ops.asyncio.stop() # bpy.ops.asyncio.stop()
net_settings.is_running = False net_settings.is_running = False
unregister_ticks() # unregister_ticks()
else: else:
logger.debug("No server/client running.") logger.debug("No server/client running.")
@ -969,17 +969,17 @@ def register():
bpy.types.ID.is_updating = bpy.props.BoolProperty(default=False) bpy.types.ID.is_updating = bpy.props.BoolProperty(default=False)
bpy.types.Scene.session_settings = bpy.props.PointerProperty( bpy.types.Scene.session_settings = bpy.props.PointerProperty(
type=session_settings) type=session_settings)
bpy.app.handlers.depsgraph_update_post.append(depsgraph_update) # bpy.app.handlers.depsgraph_update_post.append(depsgraph_update)
def unregister(): def unregister():
global server global server
global client global client
try: # try:
bpy.app.handlers.depsgraph_update_post.remove(depsgraph_update) # bpy.app.handlers.depsgraph_update_post.remove(depsgraph_update)
except: # except:
pass # pass
if server: if server:
# server.stop() # server.stop()

View File

@ -55,17 +55,17 @@ class SessionSettingsPanel(bpy.types.Panel):
row = layout.row() row = layout.row()
row.operator("session.join", text="CONNECT") row.operator("session.join", text="CONNECT")
# else: else:
# if net_operators.client.status is net_components.RCFStatus.CONNECTED: if net_operators.client.agent.is_alive():
# row.label(text="Net frequency:") row.label(text="Net frequency:")
# row.prop(net_settings, "update_frequency", text="") row.prop(net_settings, "update_frequency", text="")
# row = layout.row() row = layout.row()
# row.operator("session.stop", icon='QUIT', text="Exit") row.operator("session.stop", icon='QUIT', text="Exit")
# elif net_operators.client.status is net_components.RCFStatus.CONNECTING: # elif net_operators.client.status is net_components.RCFStatus.CONNECTING:
# row.label(text="connecting...") # row.label(text="connecting...")
# 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()

View File

@ -1,20 +0,0 @@
import collections
import logging
import threading
from uuid import uuid4
import binascii
import os
from random import randint
import time
from enum import Enum
from libs import umsgpack, zmq
from net_components import RCFMessage
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
CONNECT_TIMEOUT = 2
WAITING_TIME = 0.001
SERVER_MAX = 1