MojoReadDataFlags flags) OVERRIDE;
virtual MojoResult EndReadData(MojoHandle data_pipe_consumer_handle,
uint32_t num_bytes_read) OVERRIDE;
+ virtual MojoResult CreateSharedBuffer(
+ const MojoCreateSharedBufferOptions* options,
+ uint64_t* num_bytes,
+ MojoHandle* shared_buffer_handle) OVERRIDE;
+ virtual MojoResult DuplicateBufferHandle(
+ MojoHandle buffer_handle,
+ const MojoDuplicateBufferHandleOptions* options,
+ MojoHandle* new_buffer_handle) OVERRIDE;
+ virtual MojoResult MapBuffer(MojoHandle buffer_handle,
+ uint64_t offset,
+ uint64_t num_bytes,
+ void** buffer,
+ MojoMapBufferFlags flags) OVERRIDE;
+ virtual MojoResult UnmapBuffer(void* buffer) OVERRIDE;
private:
friend bool internal::ShutdownCheckNoLeaks(CoreImpl*);
// invalid.
scoped_refptr<Dispatcher> GetDispatcher(MojoHandle handle);
- // Assigns a new handle for the given dispatcher (which must be valid);
- // returns |MOJO_HANDLE_INVALID| on failure (due to hitting resource limits).
- // Must be called under |handle_table_lock_|.
+ // Assigns a new handle for the given dispatcher; returns
+ // |MOJO_HANDLE_INVALID| on failure (due to hitting resource limits) or if
+ // |dispatcher| is null. Must be called under |handle_table_lock_|.
MojoHandle AddDispatcherNoLock(const scoped_refptr<Dispatcher>& dispatcher);
// Internal implementation of |Wait()| and |WaitMany()|; doesn't do basic