naiveproxy/media/capture/video/chromeos/mojo/arc_camera3_service.mojom
2018-02-02 05:49:39 -05:00

49 lines
2.2 KiB
Plaintext

// Copyright 2017 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.
module arc.mojom;
import "arc_camera3.mojom";
// The ARC++ camera HAL v3 Mojo dispatcher. The dispatcher acts as a proxy and
// waits for the server and the clients to register. There can only be one
// server registered, with multiple clients requesting connections to the
// server. For each client, the dispatcher is responsible for creating a Mojo
// channel to the server and pass the established Mojo channel to the client in
// order to set up a Mojo channel between the client and the server.
//
// The CameraHalDispatcher is designed to help the server and the clients to
// recover from errors easily. For example, when the camera HAL process crashes
// the CameraHalDispatcher can still hold the connections of the clients. When
// the camera HAL reconnects the CameraHalDispatcher can then quickly restore
// the Mojo channels between the clients and the camera HAL process by calling
// CameraHalClient::SetUpChannel() in RegiserServer().
interface CameraHalDispatcher {
// A CameraHalServer calls RegisterServer to register itself with the
// dispatcher.
RegisterServer@0(CameraHalServer server);
// A CameraHalClient calls RegisterClient to register itself with the
// dispatcher.
RegisterClient@1(CameraHalClient client);
};
// The ARC++ camera HAL v3 Mojo server.
interface CameraHalServer {
// A caller calls CreateChannel to create a new Mojo channel to the camera
// HAL v3 adapter. Upon successfully binding of |camera_module_request|, the
// caller will have a established Mojo channel to the camera HAL v3 adapter
// process.
CreateChannel@0(CameraModule& camera_module_request);
};
// The ARC++ camera HAL v3 Mojo client.
interface CameraHalClient {
// A caller calls SetUpChannel to dispatch the established Mojo channel
// |camera_module_ptr| to the client. The CameraHalClient can create a
// Mojo channel to the camera HAL v3 adapter process with |camera_module_ptr|.
// SetUpChannel may be called multiple times.
SetUpChannel@0(CameraModule camera_module_ptr);
};