summaryrefslogtreecommitdiffstats
path: root/cython/mobilebackup.pxi
diff options
context:
space:
mode:
authorGravatar Bryan Forbes2010-03-17 10:27:44 -0500
committerGravatar Martin Szulecki2012-03-20 23:25:54 +0100
commit68c63cc1382326e7f0cb4e6bd863427f9069ca05 (patch)
treed4094cb7f98cdb081e614c519f6cf8d0f9080c18 /cython/mobilebackup.pxi
parentcfe6244f8954efce4ef12b9b4338cc0d41a9ff40 (diff)
downloadlibimobiledevice-68c63cc1382326e7f0cb4e6bd863427f9069ca05.tar.gz
libimobiledevice-68c63cc1382326e7f0cb4e6bd863427f9069ca05.tar.bz2
Added base class for more efficient error handling.
Diffstat (limited to 'cython/mobilebackup.pxi')
-rw-r--r--cython/mobilebackup.pxi28
1 files changed, 17 insertions, 11 deletions
diff --git a/cython/mobilebackup.pxi b/cython/mobilebackup.pxi
index 2bbaebe..f6b13a9 100644
--- a/cython/mobilebackup.pxi
+++ b/cython/mobilebackup.pxi
@@ -28,27 +28,33 @@ cdef class MobileBackupError(BaseError):
28 } 28 }
29 BaseError.__init__(self, *args, **kwargs) 29 BaseError.__init__(self, *args, **kwargs)
30 30
31cdef class MobileBackupClient(PropertyListService): 31cdef class MobileBackupClient(PropertyListClient):
32 cdef mobilebackup_client_t _c_client 32 cdef mobilebackup_client_t _c_client
33 33
34 def __cinit__(self, iDevice device not None, LockdownClient lockdown=None, *args, **kwargs): 34 def __cinit__(self, iDevice device not None, LockdownClient lockdown=None, *args, **kwargs):
35 cdef iDevice dev = device 35 cdef:
36 cdef LockdownClient lckd 36 iDevice dev = device
37 LockdownClient lckd
38 mobilebackup_error_t err
37 if lockdown is None: 39 if lockdown is None:
38 lckd = LockdownClient(dev) 40 lckd = LockdownClient(dev)
39 else: 41 else:
40 lckd = lockdown 42 lckd = lockdown
41 port = lckd.start_service("com.apple.mobilebackup") 43 port = lckd.start_service("com.apple.mobilebackup")
42 err = MobileBackupError(mobilebackup_client_new(dev._c_dev, port, &self._c_client)) 44 err = mobilebackup_client_new(dev._c_dev, port, &self._c_client)
43 if err: raise err 45 self.handle_error(err)
44 46
45 def __dealloc__(self): 47 def __dealloc__(self):
48 cdef mobilebackup_error_t err
46 if self._c_client is not NULL: 49 if self._c_client is not NULL:
47 err = MobileBackupError(mobilebackup_client_free(self._c_client)) 50 err = mobilebackup_client_free(self._c_client)
48 if err: raise err 51 self.handle_error(err)
49 52
50 cdef _send(self, plist.plist_t node): 53 cdef inline int16_t _send(self, plist.plist_t node):
51 return MobileBackupError(mobilebackup_send(self._c_client, node)) 54 return mobilebackup_send(self._c_client, node)
52 55
53 cdef _receive(self, plist.plist_t* node): 56 cdef inline int16_t _receive(self, plist.plist_t* node):
54 return MobileBackupError(mobilebackup_receive(self._c_client, node)) 57 return mobilebackup_receive(self._c_client, node)
58
59 cdef inline BaseError _error(self, int16_t ret):
60 return MobileBackupError(ret)