Index: mojo/public/python/mojo/bindings/messaging.py |
diff --git a/mojo/public/python/mojo/bindings/messaging.py b/mojo/public/python/mojo/bindings/messaging.py |
index e5a765e1d618135cef191312dc5be1cd2e8f2bd9..fb1263ef55a912c0665bcf99df5e669dde3af861 100644 |
--- a/mojo/public/python/mojo/bindings/messaging.py |
+++ b/mojo/public/python/mojo/bindings/messaging.py |
@@ -6,6 +6,7 @@ |
import struct |
+import sys |
import weakref |
import mojo.bindings.serialization as serialization |
@@ -20,6 +21,12 @@ MESSAGE_EXPECTS_RESPONSE_FLAG = 1 << 0 |
MESSAGE_IS_RESPONSE_FLAG = 1 << 1 |
+class MessagingException(Exception): |
+ def __init__(self, *args, **kwargs): |
+ Exception.__init__(self, *args, **kwargs) |
+ self.__traceback__ = sys.exc_info()[2] |
+ |
+ |
class MessageHeader(object): |
"""The header of a mojo message.""" |
@@ -117,10 +124,10 @@ class MessageHeader(object): |
class Message(object): |
"""A message for a message pipe. This contains data and handles.""" |
- def __init__(self, data=None, handles=None): |
+ def __init__(self, data=None, handles=None, header=None): |
self.data = data |
self.handles = handles |
- self._header = None |
+ self._header = header |
self._payload = None |
@property |
@@ -251,6 +258,7 @@ class Connector(MessageReceiver): |
assert not self._cancellable |
if self._error_handler: |
self._error_handler.OnError(result) |
+ self._handle.Close() |
def _RegisterAsyncWaiterForRead(self) : |
assert not self._cancellable |
@@ -284,7 +292,7 @@ class Router(MessageReceiverWithResponder): |
self._responders = {} |
self._connector = Connector(handle) |
self._connector.SetIncomingMessageReceiver( |
- ForwardingMessageReceiver(self._HandleIncomingMessage)) |
+ ForwardingMessageReceiver(_WeakCallback(self._HandleIncomingMessage))) |
def Start(self): |
self._connector.Start() |