You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.7 KiB
66 lines
2.7 KiB
// Copyright (C) 2018 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";
|
|
|
|
package android.emulation.control;
|
|
|
|
option java_package = "com.android.emulator.control";
|
|
|
|
// Used to communicate the socket state between a waterfall service running
|
|
// inside the emulator (guest) and a domain socket running on the host
|
|
// (emulator)
|
|
//
|
|
// The host does not have the abiliy to open direct connections, but can accept
|
|
// incoming connections.
|
|
//
|
|
// The protocol is as follows:
|
|
//
|
|
// - The first message on a channel from guest -> host is always a
|
|
// "SocketControl" message.
|
|
// - A channel that is identified with fd=0 is called the control channel.
|
|
// Only SocketControl messages are exchanged on this channel.
|
|
//
|
|
// For channel 0:
|
|
// - If the hosts sends an open message:
|
|
// - The guest should respond with a new connection, With the first
|
|
// message
|
|
// an identity message with the requested fd
|
|
// - If the hosts sends a close message:
|
|
// - The guest can close the connection with the given fd, no new
|
|
// messages will be send on the
|
|
// channel. (Be aware of out of order delivery, there still might be
|
|
// some leftover bytes)
|
|
// - If the guests sends a close message:
|
|
// - The host can close the connection with the given fd, no new
|
|
// messages will be send on the
|
|
// channel. (Be aware of out of order delivery, there still might be
|
|
// some leftover bytes)
|
|
//
|
|
// For a new connection the host usually will read the socket control message,
|
|
// and pass on the remaining bytes to whomever wants to consume them.
|
|
message SocketControl {
|
|
enum Sort {
|
|
identity = 0; // Indicates the identify of the channel on which this
|
|
// message is sent.
|
|
open = 1; // Request the client to open up a connection with the
|
|
// requested id.
|
|
close = 2; // Indicate that the channel with the given fd is to be
|
|
// closed. More specifically No new data will be placed on
|
|
// the wire after the sending of this message.
|
|
}
|
|
|
|
required Sort sort = 1; // 1 Byte
|
|
required fixed32 fd = 2; // 4 Bytes
|
|
}
|