blob: f6a951df0e9c6af48486f1c1844f82870d307403 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.developer.remotecontrol;
using fuchsia.io;
using fuchsia.logger as logger;
using fuchsia.diagnostics as diagnostics;
using zx;
const MAX_ENTRIES int32 = 1;
type StreamError = strict enum : uint32 {
// Indicates an error that doesn't fall into any of the below types.
GENERIC_ERROR = 1;
// Indicates a required parameter is missing
MISSING_PARAMETER = 2;
// Indicates a parameter has a value that is currently unsupported.
UNSUPPORTED_PARAMETER = 3;
// Indicates a failure when setting up the subscription to ArchiveAccessor
SETUP_SUBSCRIPTION_FAILED = 4;
};
type BridgeStreamParameters = table {
1: stream_mode diagnostics.StreamMode;
2: data_type diagnostics.DataType;
3: client_selector_configuration diagnostics.ClientSelectorConfiguration;
4: accessor_path fuchsia.io.Path;
};
type ArchiveIteratorEntry = resource table {
@deprecated("The data is now sent using the diagnostics_data field")
1: data string:logger.MAX_DATAGRAM_LEN_BYTES;
@deprecated("The data is now sent using the diagnostics_data field")
2: truncated_chars uint32;
3: diagnostics_data DiagnosticsData;
};
type InlineData = struct {
data string:logger.MAX_DATAGRAM_LEN_BYTES;
@deprecated(
"Data is no longer truncated, instead large messages use the socket variant of the DiagnosticsData union")
truncated_chars uint32;
};
type DiagnosticsData = strict resource union {
1: inline InlineData;
2: socket zx.handle:SOCKET;
};
type ArchiveIteratorError = strict enum : uint32 {
GENERIC_ERROR = 1;
DATA_READ_FAILED = 2;
TRUNCATION_FAILED = 3;
};
protocol ArchiveIterator {
GetNext() -> (resource struct {
entry vector<ArchiveIteratorEntry>:MAX_ENTRIES;
}) error ArchiveIteratorError;
};
@discoverable
protocol RemoteDiagnosticsBridge {
StreamDiagnostics(resource struct {
parameters BridgeStreamParameters;
iterator server_end:ArchiveIterator;
}) -> (struct {}) error StreamError;
// This is a workaround to ensure the bridge is started by the framework
// before the frontend attempts to connect to it.
// TODO: remove this once fxbug.dev/60910 has been fixed.
@deprecated("Hack method - will be removed shortly.")
Hello() -> ();
};