new .dispose() method to release resources in the backend classes

This commit is contained in:
Philipp Klaus
2016-07-22 18:30:56 +02:00
parent 1b1aa1f45a
commit 0c241adbdf
5 changed files with 30 additions and 0 deletions
+12
View File
@@ -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()
+3
View File
@@ -75,3 +75,6 @@ class BrotherQLBackendLinuxKernel(BrotherQLBackendGeneric):
return data
else:
raise NotImplementedError('Unknown strategy')
def _dispose(self):
os.close(self.dev)
+4
View File
@@ -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()
+10
View File
@@ -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
+1
View File
@@ -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)