def init_worker(): with worker_ctx() as worker: try: worker.init() xcamserver.socket_server.init(worker.frame_size) xcamserver.socket_server.data_size = worker.frame_size # if xcamserver.socket_server is None: # xcamserver.socket_server = SocketServer() server_addr = xcamserver.socket_server.server_socket.getsockname() # Connect to SocketServer client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(server_addr) client_addr = client_socket.getsockname() # Socket server listens the camera worker xcamserver.socket_server.camera_addr = client_addr # Camera writes data to the socket connection = client_socket.makefile(mode='wb') worker.camera_handler = connection worker.stream_address = server_addr xcamserver.socket_server.run() except Exception as e: print('%s' % str(repr(e))) finally: return meta2json(worker.get_meta())
def get_metadata(): with worker_ctx() as worker: try: data = worker.get_meta() except: pass finally: return meta2json(data)
def stop_worker(): with worker_ctx() as worker: try: worker.stop() except: pass finally: return meta2json(worker.get_meta())
def close(): with worker_ctx() as worker: try: worker.close() xcamserver.socket_server.close() except: pass finally: return meta2json(worker.get_meta())
def start_worker(): print('Starting worker') # Contexts are for preventing overlapping accesses to resources with worker_ctx() as worker: # if not worker.initialized: # print('Worker is not initialized. Call /init before calling /start') # worker.status = 'ERROR' # worker.error = 'Worker is not initialized. Call /init before calling /start' # return get_metadata() try: # worker.set_handler(worker.camera_handler) worker.start() except: return meta2json(worker.get_meta()) else: print('Worker is starting.') return meta2json(worker.get_meta())
def close_worker(): with worker_ctx() as worker: try: worker.close() finally: return meta2json(worker.get_meta())
def tearDown(self): with xcamserver.worker_ctx() as worker: worker.close() xcamserver.socket_server.close()