diff options
author | René 'Necoro' Neumann <necoro@necoro.net> | 2010-04-14 22:28:19 +0200 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.net> | 2010-04-14 22:28:19 +0200 |
commit | 67d927540ee10dbf70b9b71eda152605a63bbc90 (patch) | |
tree | 7247e43b1b159439743e6c77edfd4124b9fe63e2 /portato/ipc.pyx | |
parent | 06f03d7aa376c8164eff5068a412e76cf2c0b0a9 (diff) | |
parent | e5b5b6793999a5094832b1819cc6b5e5e5f0ca39 (diff) | |
download | portato-67d927540ee10dbf70b9b71eda152605a63bbc90.tar.gz portato-67d927540ee10dbf70b9b71eda152605a63bbc90.tar.bz2 portato-67d927540ee10dbf70b9b71eda152605a63bbc90.zip |
Merge branch '0.14'
* 0.14:
Make some useless info messages being debug statements
Improve the C modules
Small modifications made to the French translation (typos, grammar).
Fixed the unicode support and stuff ... and also made eix faster :)
Disable debug messages by default
Better eix error inheritance and handling
Diffstat (limited to '')
-rw-r--r-- | portato/ipc.pyx | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/portato/ipc.pyx b/portato/ipc.pyx index abb26fe..7dcf949 100644 --- a/portato/ipc.pyx +++ b/portato/ipc.pyx @@ -70,7 +70,7 @@ cdef class MessageQueue (object): elif errno == ENOENT: raise MessageQueueError("Queue does not exist and 'create' is not set.") elif errno == ENOMEM or errno == ENOSPC: - raise MemoryError("Insufficient ressources.") + PyErr_NoMemory() else: raise OSError(errno, strerror(errno)) @@ -111,7 +111,7 @@ cdef class MessageQueue (object): msg = <msg_data*>PyMem_Malloc(sizeof(msg_data) + size) if msg is NULL: - raise MemoryError("Out of memory") + PyErr_NoMemory() memcpy(msg.mtext, <char*>message, size) msg.mtype = type @@ -119,18 +119,17 @@ cdef class MessageQueue (object): with nogil: ret = msgsnd(self.msgid, msg, size, 0) - try: - if ret == -1: - if errno == EIDRM or errno == EINVAL: - raise MessageQueueRemovedError("Queue was removed.") - elif errno == EINTR: - raise MessageQueueError("Signaled while waiting.") - elif errno == EACCES: - raise MessageQueueError("Permission denied.") - else: - raise OSError(errno, strerror(errno)) - finally: - PyMem_Free(msg) + PyMem_Free(msg) + + if ret == -1: + if errno == EIDRM or errno == EINVAL: + raise MessageQueueRemovedError("Queue was removed.") + elif errno == EINTR: + raise MessageQueueError("Signaled while waiting.") + elif errno == EACCES: + raise MessageQueueError("Permission denied.") + else: + raise OSError(errno, strerror(errno)) def receive (self): """ @@ -145,7 +144,7 @@ cdef class MessageQueue (object): msg = <msg_data*>PyMem_Malloc(sizeof(msg_data) + MAX_MESSAGE_SIZE) if msg is NULL: - raise MemoryError("Out of memory") + PyErr_NoMemory() msg.mtype = 0 @@ -162,12 +161,11 @@ cdef class MessageQueue (object): raise MessageQueueError("Permission denied.") else: raise OSError(errno, strerror(errno)) - - retTuple = (PyString_FromStringAndSize(msg.mtext, ret), msg.mtype) + else: + return (PyString_FromStringAndSize(msg.mtext, ret), msg.mtype) + finally: PyMem_Free(msg) - return retTuple - cdef inline key_t random_key (self): return <int>(<double>rand() / (<double>RAND_MAX + 1) * INT_MAX) |