aboutsummaryrefslogtreecommitdiff
path: root/src/ipc/wire_protocol.proto
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipc/wire_protocol.proto')
-rw-r--r--src/ipc/wire_protocol.proto76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/ipc/wire_protocol.proto b/src/ipc/wire_protocol.proto
new file mode 100644
index 000000000..c41eabbd7
--- /dev/null
+++ b/src/ipc/wire_protocol.proto
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+
+package perfetto.ipc;
+
+message Frame {
+ // Client -> Host.
+ message BindService { optional string service_name = 1; }
+
+ // Host -> Client.
+ message BindServiceReply {
+ message MethodInfo {
+ optional uint32 id = 1;
+ optional string name = 2;
+ }
+ optional bool success = 1;
+ optional uint32 service_id = 2;
+ repeated MethodInfo methods = 3;
+ }
+
+ // Client -> Host.
+ message InvokeMethod {
+ optional uint32 service_id = 1; // BindServiceReply.id.
+ optional uint32 method_id = 2; // BindServiceReply.method.id.
+ optional bytes args_proto = 3; // Proto-encoded request argument.
+
+ // When true the client specifies that a reply is not needed. The use case
+ // is a method with an empty, where the client doesn't care about the
+ // success/failure of the method invocation and rather prefers avoiding the
+ // IPC roundtrip + context switch associated with the reply.
+ optional bool drop_reply = 4;
+ }
+
+ // Host -> Client.
+ message InvokeMethodReply {
+ optional bool success = 1;
+ optional bool has_more = 2; // only for streaming RPCs.
+ optional bytes reply_proto = 3; // proto-encoded response value.
+ }
+
+ // Host -> Client.
+ message RequestError { optional string error = 1; }
+
+ // The client is expected to send requests with monotonically increasing
+ // request_id. The host will match the request_id sent from the client.
+ // In the case of a Streaming response (has_more = true) the host will send
+ // several InvokeMethodReply with the same request_id.
+ optional uint64 request_id = 2;
+
+ oneof msg {
+ BindService msg_bind_service = 3;
+ BindServiceReply msg_bind_service_reply = 4;
+ InvokeMethod msg_invoke_method = 5;
+ InvokeMethodReply msg_invoke_method_reply = 6;
+ RequestError msg_request_error = 7;
+ }
+
+ // Used only in unittests to generate a parsable message of arbitrary size.
+ repeated bytes data_for_testing = 1;
+};