new .dispose() method to release resources in the backend classes
This commit is contained in:
@@ -39,3 +39,15 @@ class BrotherQLBackendGeneric(object):
|
||||
except Exception as e:
|
||||
logger.debug('Error reading... %s', e)
|
||||
raise
|
||||
|
||||
def dispose(self):
|
||||
try:
|
||||
self._dispose()
|
||||
except:
|
||||
pass
|
||||
|
||||
def _dispose(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
def __del__(self):
|
||||
self.dispose()
|
||||
|
||||
@@ -75,3 +75,6 @@ class BrotherQLBackendLinuxKernel(BrotherQLBackendGeneric):
|
||||
return data
|
||||
else:
|
||||
raise NotImplementedError('Unknown strategy')
|
||||
|
||||
def _dispose(self):
|
||||
os.close(self.dev)
|
||||
|
||||
@@ -90,3 +90,7 @@ class BrotherQLBackendNetwork(BrotherQLBackendGeneric):
|
||||
return data
|
||||
else:
|
||||
raise NotImplementedError('Unknown strategy')
|
||||
|
||||
def _dispose(self):
|
||||
self.s.shutdown(socket.SHUT_RDWR)
|
||||
self.s.close()
|
||||
|
||||
@@ -88,6 +88,9 @@ class BrotherQLBackendPyUSB(BrotherQLBackendGeneric):
|
||||
|
||||
if self.dev.is_kernel_driver_active(0):
|
||||
self.dev.detach_kernel_driver(0)
|
||||
self.was_kernel_driver_active = True
|
||||
else:
|
||||
self.was_kernel_driver_active = False
|
||||
|
||||
# set the active configuration. With no arguments, the first configuration will be the active one
|
||||
self.dev.set_configuration()
|
||||
@@ -135,3 +138,10 @@ class BrotherQLBackendPyUSB(BrotherQLBackendGeneric):
|
||||
return data
|
||||
else:
|
||||
raise NotImplementedError('Unknown strategy')
|
||||
|
||||
def _dispose(self):
|
||||
usb.util.dispose_resources(self.dev)
|
||||
del self.write_dev, self.read_dev
|
||||
if self.was_kernel_driver_active:
|
||||
self.dev.attach_kernel_driver(0)
|
||||
del self.dev
|
||||
|
||||
@@ -149,6 +149,7 @@ def print_text(content=None):
|
||||
try:
|
||||
be = BACKEND_CLASS(BACKEND_STRING_DESCR)
|
||||
be.write(qlr.data)
|
||||
be.dispose()
|
||||
del be
|
||||
except Exception as e:
|
||||
return_dict['message'] = str(e)
|
||||
|
||||
Reference in New Issue
Block a user