Index: mojo/bindings/java/src/org/chromium/mojo/bindings/Connector.java |
diff --git a/mojo/bindings/java/src/org/chromium/mojo/bindings/Connector.java b/mojo/bindings/java/src/org/chromium/mojo/bindings/Connector.java |
index 17cc7ed9fe27e3d3d540a5edc792246a60f076ce..f978ba49b0b3a4f504ec1c34309d93dd9dda753f 100644 |
--- a/mojo/bindings/java/src/org/chromium/mojo/bindings/Connector.java |
+++ b/mojo/bindings/java/src/org/chromium/mojo/bindings/Connector.java |
@@ -21,6 +21,13 @@ |
public class Connector implements MessageReceiver, HandleOwner<MessagePipeHandle> { |
/** |
+ * An {@link ErrorHandler} is notified of error happening while using the message pipe. |
+ */ |
+ interface ErrorHandler { |
+ public void onError(MojoException e); |
+ } |
+ |
+ /** |
* The callback that is notified when the state of the owned handle changes. |
*/ |
private final AsyncWaiterCallback mAsyncWaiterCallback = new AsyncWaiterCallback(); |
@@ -48,14 +55,14 @@ |
/** |
* The error handler to notify of errors. |
*/ |
- private ConnectionErrorHandler mErrorHandler; |
+ private ErrorHandler mErrorHandler; |
/** |
* Create a new connector over a |messagePipeHandle|. The created connector will use the default |
* {@link AsyncWaiter} from the {@link Core} implementation of |messagePipeHandle|. |
*/ |
public Connector(MessagePipeHandle messagePipeHandle) { |
- this(messagePipeHandle, BindingsHelper.getDefaultAsyncWaiterForHandle(messagePipeHandle)); |
+ this(messagePipeHandle, getDefaultAsyncWaiterForMessagePipe(messagePipeHandle)); |
} |
/** |
@@ -76,10 +83,9 @@ |
} |
/** |
- * Set the {@link ConnectionErrorHandler} that will be notified of errors on the owned message |
- * pipe. |
- */ |
- public void setErrorHandler(ConnectionErrorHandler errorHandler) { |
+ * Set the {@link ErrorHandler} that will be notified of errors on the owned message pipe. |
+ */ |
+ public void setErrorHandler(ErrorHandler errorHandler) { |
mErrorHandler = errorHandler; |
} |
@@ -92,13 +98,13 @@ |
} |
/** |
- * @see MessageReceiver#accept(MessageWithHeader) |
+ * @see MessageReceiver#accept(Message) |
*/ |
@Override |
- public boolean accept(MessageWithHeader message) { |
+ public boolean accept(Message message) { |
try { |
- mMessagePipeHandle.writeMessage(message.getMessage().buffer, |
- message.getMessage().handles, MessagePipeHandle.WriteFlags.NONE); |
+ mMessagePipeHandle.writeMessage(message.buffer, message.handles, |
+ MessagePipeHandle.WriteFlags.NONE); |
return true; |
} catch (MojoException e) { |
onError(e); |
@@ -125,6 +131,15 @@ |
public void close() { |
cancelIfActive(); |
mMessagePipeHandle.close(); |
+ } |
+ |
+ private static AsyncWaiter getDefaultAsyncWaiterForMessagePipe( |
+ MessagePipeHandle messagePipeHandle) { |
+ if (messagePipeHandle.getCore() != null) { |
+ return messagePipeHandle.getCore().getDefaultAsyncWaiter(); |
+ } else { |
+ return null; |
+ } |
} |
private class AsyncWaiterCallback implements AsyncWaiter.Callback { |
@@ -163,7 +178,7 @@ |
mCancellable = null; |
close(); |
if (mErrorHandler != null) { |
- mErrorHandler.onConnectionError(exception); |
+ mErrorHandler.onError(exception); |
} |
} |
@@ -187,7 +202,7 @@ |
int result; |
do { |
try { |
- result = MessageWithHeader.readAndDispatchMessage(mMessagePipeHandle, |
+ result = Message.readAndDispatchMessage(mMessagePipeHandle, |
mIncomingMessageReceiver); |
} catch (MojoException e) { |
onError(e); |
@@ -207,4 +222,5 @@ |
mCancellable = null; |
} |
} |
+ |
} |