| Index: mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java
|
| diff --git a/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java b/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java
|
| index 8330586714ab02779d4020b7a8ffbba3227be343..173f80180f6639f25ef85991a409cb4ada75a49c 100644
|
| --- a/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java
|
| +++ b/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java
|
| @@ -8,6 +8,7 @@ import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.JNINamespace;
|
| import org.chromium.base.annotations.MainDex;
|
| import org.chromium.mojo.system.Core;
|
| +import org.chromium.mojo.system.Core.HandleSignalsState;
|
| import org.chromium.mojo.system.DataPipe;
|
| import org.chromium.mojo.system.DataPipe.ConsumerHandle;
|
| import org.chromium.mojo.system.DataPipe.ProducerHandle;
|
| @@ -27,7 +28,6 @@ import org.chromium.mojo.system.Watcher;
|
| import java.nio.ByteBuffer;
|
| import java.nio.ByteOrder;
|
| import java.util.ArrayList;
|
| -import java.util.Arrays;
|
| import java.util.List;
|
|
|
| /**
|
| @@ -91,61 +91,6 @@ public class CoreImpl implements Core {
|
| }
|
|
|
| /**
|
| - * @see Core#waitMany(List, long)
|
| - */
|
| - @Override
|
| - public WaitManyResult waitMany(List<Pair<Handle, HandleSignals>> handles, long deadline) {
|
| - // Allocate a direct buffer to allow native code not to reach back to java. The buffer
|
| - // layout will be:
|
| - // input: The array of handles (int, 4 bytes each)
|
| - // input: The array of signals (int, 4 bytes each)
|
| - // space for output: The array of handle states (2 ints, 8 bytes each)
|
| - // Space for output: The result index (int, 4 bytes)
|
| - // The handles and signals will be filled before calling the native method. When the native
|
| - // method returns, the handle states and the index will have been set.
|
| - ByteBuffer buffer = allocateDirectBuffer(handles.size() * 16 + 4);
|
| - int index = 0;
|
| - for (Pair<Handle, HandleSignals> handle : handles) {
|
| - buffer.putInt(HANDLE_SIZE * index, getMojoHandle(handle.first));
|
| - buffer.putInt(
|
| - HANDLE_SIZE * handles.size() + FLAG_SIZE * index, handle.second.getFlags());
|
| - index++;
|
| - }
|
| - int code = nativeWaitMany(buffer, deadline);
|
| - WaitManyResult result = new WaitManyResult();
|
| - result.setMojoResult(filterMojoResultForWait(code));
|
| - result.setHandleIndex(buffer.getInt(handles.size() * 16));
|
| - if (result.getMojoResult() != MojoResult.INVALID_ARGUMENT
|
| - && result.getMojoResult() != MojoResult.RESOURCE_EXHAUSTED) {
|
| - HandleSignalsState[] states = new HandleSignalsState[handles.size()];
|
| - for (int i = 0; i < handles.size(); ++i) {
|
| - states[i] = new HandleSignalsState(
|
| - new HandleSignals(buffer.getInt(8 * (handles.size() + i))),
|
| - new HandleSignals(buffer.getInt(8 * (handles.size() + i) + 4)));
|
| - }
|
| - result.setSignalStates(Arrays.asList(states));
|
| - }
|
| - return result;
|
| - }
|
| -
|
| - /**
|
| - * @see Core#wait(Handle, HandleSignals, long)
|
| - */
|
| - @Override
|
| - public WaitResult wait(Handle handle, HandleSignals signals, long deadline) {
|
| - // Allocate a direct buffer to allow native code not to reach back to java. Buffer will
|
| - // contain spaces to write the handle state.
|
| - ByteBuffer buffer = allocateDirectBuffer(8);
|
| - WaitResult result = new WaitResult();
|
| - result.setMojoResult(filterMojoResultForWait(
|
| - nativeWait(buffer, getMojoHandle(handle), signals.getFlags(), deadline)));
|
| - HandleSignalsState signalsState = new HandleSignalsState(
|
| - new HandleSignals(buffer.getInt(0)), new HandleSignals(buffer.getInt(4)));
|
| - result.setHandleSignalsState(signalsState);
|
| - return result;
|
| - }
|
| -
|
| - /**
|
| * @see Core#createMessagePipe(MessagePipeHandle.CreateOptions)
|
| */
|
| @Override
|
| @@ -262,6 +207,14 @@ public class CoreImpl implements Core {
|
| }
|
| }
|
|
|
| + HandleSignalsState queryHandleSignalsState(int mojoHandle) {
|
| + ByteBuffer buffer = allocateDirectBuffer(8);
|
| + int result = nativeQueryHandleSignalsState(mojoHandle, buffer);
|
| + if (result != MojoResult.OK) throw new MojoException(result);
|
| + return new HandleSignalsState(
|
| + new HandleSignals(buffer.getInt(0)), new HandleSignals(buffer.getInt(4)));
|
| + }
|
| +
|
| /**
|
| * @see MessagePipeHandle#writeMessage(ByteBuffer, List, MessagePipeHandle.WriteFlags)
|
| */
|
| @@ -525,8 +478,6 @@ public class CoreImpl implements Core {
|
|
|
| private native long nativeGetTimeTicksNow();
|
|
|
| - private native int nativeWaitMany(ByteBuffer buffer, long deadline);
|
| -
|
| private native ResultAnd<IntegerPair> nativeCreateMessagePipe(ByteBuffer optionsBuffer);
|
|
|
| private native ResultAnd<IntegerPair> nativeCreateDataPipe(ByteBuffer optionsBuffer);
|
| @@ -536,7 +487,7 @@ public class CoreImpl implements Core {
|
|
|
| private native int nativeClose(int mojoHandle);
|
|
|
| - private native int nativeWait(ByteBuffer buffer, int mojoHandle, int signals, long deadline);
|
| + private native int nativeQueryHandleSignalsState(int mojoHandle, ByteBuffer signalsStateBuffer);
|
|
|
| private native int nativeWriteMessage(
|
| int mojoHandle, ByteBuffer bytes, int numBytes, ByteBuffer handlesBuffer, int flags);
|
|
|