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:
|
except Exception as e:
|
||||||
logger.debug('Error reading... %s', e)
|
logger.debug('Error reading... %s', e)
|
||||||
raise
|
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
|
return data
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError('Unknown strategy')
|
raise NotImplementedError('Unknown strategy')
|
||||||
|
|
||||||
|
def _dispose(self):
|
||||||
|
os.close(self.dev)
|
||||||
|
|||||||
@@ -90,3 +90,7 @@ class BrotherQLBackendNetwork(BrotherQLBackendGeneric):
|
|||||||
return data
|
return data
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError('Unknown strategy')
|
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):
|
if self.dev.is_kernel_driver_active(0):
|
||||||
self.dev.detach_kernel_driver(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
|
# set the active configuration. With no arguments, the first configuration will be the active one
|
||||||
self.dev.set_configuration()
|
self.dev.set_configuration()
|
||||||
@@ -135,3 +138,10 @@ class BrotherQLBackendPyUSB(BrotherQLBackendGeneric):
|
|||||||
return data
|
return data
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError('Unknown strategy')
|
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:
|
try:
|
||||||
be = BACKEND_CLASS(BACKEND_STRING_DESCR)
|
be = BACKEND_CLASS(BACKEND_STRING_DESCR)
|
||||||
be.write(qlr.data)
|
be.write(qlr.data)
|
||||||
|
be.dispose()
|
||||||
del be
|
del be
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return_dict['message'] = str(e)
|
return_dict['message'] = str(e)
|
||||||
|
|||||||
Reference in New Issue
Block a user