diff options
Diffstat (limited to 'mojo/public/cpp/bindings/interface_endpoint_controller.h')
-rw-r--r-- | mojo/public/cpp/bindings/interface_endpoint_controller.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/mojo/public/cpp/bindings/interface_endpoint_controller.h b/mojo/public/cpp/bindings/interface_endpoint_controller.h new file mode 100644 index 0000000000..8d99d4a45f --- /dev/null +++ b/mojo/public/cpp/bindings/interface_endpoint_controller.h @@ -0,0 +1,37 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_ENDPOINT_CONTROLLER_H_ +#define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_ENDPOINT_CONTROLLER_H_ + +namespace mojo { + +class Message; + +// A control interface exposed by AssociatedGroupController for interface +// endpoints. +class InterfaceEndpointController { + public: + virtual ~InterfaceEndpointController() {} + + virtual bool SendMessage(Message* message) = 0; + + // Allows the interface endpoint to watch for incoming sync messages while + // others perform sync handle watching on the same thread. Please see comments + // of SyncHandleWatcher::AllowWokenUpBySyncWatchOnSameThread(). + virtual void AllowWokenUpBySyncWatchOnSameThread() = 0; + + // Watches the interface endpoint for incoming sync messages. (It also watches + // other other handles registered to be watched together.) + // This method: + // - returns true when |should_stop| is set to true; + // - return false otherwise, including + // MultiplexRouter::DetachEndpointClient() being called for the same + // interface endpoint. + virtual bool SyncWatch(const bool* should_stop) = 0; +}; + +} // namespace mojo + +#endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_ENDPOINT_CONTROLLER_H_ |