460 lines
9.1 KiB
Protocol Buffer
460 lines
9.1 KiB
Protocol Buffer
syntax = "proto2";
|
|
option go_package = "socket";
|
|
|
|
package appengine;
|
|
|
|
message RemoteSocketServiceError {
|
|
enum ErrorCode {
|
|
SYSTEM_ERROR = 1;
|
|
GAI_ERROR = 2;
|
|
FAILURE = 4;
|
|
PERMISSION_DENIED = 5;
|
|
INVALID_REQUEST = 6;
|
|
SOCKET_CLOSED = 7;
|
|
}
|
|
|
|
enum SystemError {
|
|
option allow_alias = true;
|
|
|
|
SYS_SUCCESS = 0;
|
|
SYS_EPERM = 1;
|
|
SYS_ENOENT = 2;
|
|
SYS_ESRCH = 3;
|
|
SYS_EINTR = 4;
|
|
SYS_EIO = 5;
|
|
SYS_ENXIO = 6;
|
|
SYS_E2BIG = 7;
|
|
SYS_ENOEXEC = 8;
|
|
SYS_EBADF = 9;
|
|
SYS_ECHILD = 10;
|
|
SYS_EAGAIN = 11;
|
|
SYS_EWOULDBLOCK = 11;
|
|
SYS_ENOMEM = 12;
|
|
SYS_EACCES = 13;
|
|
SYS_EFAULT = 14;
|
|
SYS_ENOTBLK = 15;
|
|
SYS_EBUSY = 16;
|
|
SYS_EEXIST = 17;
|
|
SYS_EXDEV = 18;
|
|
SYS_ENODEV = 19;
|
|
SYS_ENOTDIR = 20;
|
|
SYS_EISDIR = 21;
|
|
SYS_EINVAL = 22;
|
|
SYS_ENFILE = 23;
|
|
SYS_EMFILE = 24;
|
|
SYS_ENOTTY = 25;
|
|
SYS_ETXTBSY = 26;
|
|
SYS_EFBIG = 27;
|
|
SYS_ENOSPC = 28;
|
|
SYS_ESPIPE = 29;
|
|
SYS_EROFS = 30;
|
|
SYS_EMLINK = 31;
|
|
SYS_EPIPE = 32;
|
|
SYS_EDOM = 33;
|
|
SYS_ERANGE = 34;
|
|
SYS_EDEADLK = 35;
|
|
SYS_EDEADLOCK = 35;
|
|
SYS_ENAMETOOLONG = 36;
|
|
SYS_ENOLCK = 37;
|
|
SYS_ENOSYS = 38;
|
|
SYS_ENOTEMPTY = 39;
|
|
SYS_ELOOP = 40;
|
|
SYS_ENOMSG = 42;
|
|
SYS_EIDRM = 43;
|
|
SYS_ECHRNG = 44;
|
|
SYS_EL2NSYNC = 45;
|
|
SYS_EL3HLT = 46;
|
|
SYS_EL3RST = 47;
|
|
SYS_ELNRNG = 48;
|
|
SYS_EUNATCH = 49;
|
|
SYS_ENOCSI = 50;
|
|
SYS_EL2HLT = 51;
|
|
SYS_EBADE = 52;
|
|
SYS_EBADR = 53;
|
|
SYS_EXFULL = 54;
|
|
SYS_ENOANO = 55;
|
|
SYS_EBADRQC = 56;
|
|
SYS_EBADSLT = 57;
|
|
SYS_EBFONT = 59;
|
|
SYS_ENOSTR = 60;
|
|
SYS_ENODATA = 61;
|
|
SYS_ETIME = 62;
|
|
SYS_ENOSR = 63;
|
|
SYS_ENONET = 64;
|
|
SYS_ENOPKG = 65;
|
|
SYS_EREMOTE = 66;
|
|
SYS_ENOLINK = 67;
|
|
SYS_EADV = 68;
|
|
SYS_ESRMNT = 69;
|
|
SYS_ECOMM = 70;
|
|
SYS_EPROTO = 71;
|
|
SYS_EMULTIHOP = 72;
|
|
SYS_EDOTDOT = 73;
|
|
SYS_EBADMSG = 74;
|
|
SYS_EOVERFLOW = 75;
|
|
SYS_ENOTUNIQ = 76;
|
|
SYS_EBADFD = 77;
|
|
SYS_EREMCHG = 78;
|
|
SYS_ELIBACC = 79;
|
|
SYS_ELIBBAD = 80;
|
|
SYS_ELIBSCN = 81;
|
|
SYS_ELIBMAX = 82;
|
|
SYS_ELIBEXEC = 83;
|
|
SYS_EILSEQ = 84;
|
|
SYS_ERESTART = 85;
|
|
SYS_ESTRPIPE = 86;
|
|
SYS_EUSERS = 87;
|
|
SYS_ENOTSOCK = 88;
|
|
SYS_EDESTADDRREQ = 89;
|
|
SYS_EMSGSIZE = 90;
|
|
SYS_EPROTOTYPE = 91;
|
|
SYS_ENOPROTOOPT = 92;
|
|
SYS_EPROTONOSUPPORT = 93;
|
|
SYS_ESOCKTNOSUPPORT = 94;
|
|
SYS_EOPNOTSUPP = 95;
|
|
SYS_ENOTSUP = 95;
|
|
SYS_EPFNOSUPPORT = 96;
|
|
SYS_EAFNOSUPPORT = 97;
|
|
SYS_EADDRINUSE = 98;
|
|
SYS_EADDRNOTAVAIL = 99;
|
|
SYS_ENETDOWN = 100;
|
|
SYS_ENETUNREACH = 101;
|
|
SYS_ENETRESET = 102;
|
|
SYS_ECONNABORTED = 103;
|
|
SYS_ECONNRESET = 104;
|
|
SYS_ENOBUFS = 105;
|
|
SYS_EISCONN = 106;
|
|
SYS_ENOTCONN = 107;
|
|
SYS_ESHUTDOWN = 108;
|
|
SYS_ETOOMANYREFS = 109;
|
|
SYS_ETIMEDOUT = 110;
|
|
SYS_ECONNREFUSED = 111;
|
|
SYS_EHOSTDOWN = 112;
|
|
SYS_EHOSTUNREACH = 113;
|
|
SYS_EALREADY = 114;
|
|
SYS_EINPROGRESS = 115;
|
|
SYS_ESTALE = 116;
|
|
SYS_EUCLEAN = 117;
|
|
SYS_ENOTNAM = 118;
|
|
SYS_ENAVAIL = 119;
|
|
SYS_EISNAM = 120;
|
|
SYS_EREMOTEIO = 121;
|
|
SYS_EDQUOT = 122;
|
|
SYS_ENOMEDIUM = 123;
|
|
SYS_EMEDIUMTYPE = 124;
|
|
SYS_ECANCELED = 125;
|
|
SYS_ENOKEY = 126;
|
|
SYS_EKEYEXPIRED = 127;
|
|
SYS_EKEYREVOKED = 128;
|
|
SYS_EKEYREJECTED = 129;
|
|
SYS_EOWNERDEAD = 130;
|
|
SYS_ENOTRECOVERABLE = 131;
|
|
SYS_ERFKILL = 132;
|
|
}
|
|
|
|
optional int32 system_error = 1 [default=0];
|
|
optional string error_detail = 2;
|
|
}
|
|
|
|
message AddressPort {
|
|
required int32 port = 1;
|
|
optional bytes packed_address = 2;
|
|
|
|
optional string hostname_hint = 3;
|
|
}
|
|
|
|
|
|
|
|
message CreateSocketRequest {
|
|
enum SocketFamily {
|
|
IPv4 = 1;
|
|
IPv6 = 2;
|
|
}
|
|
|
|
enum SocketProtocol {
|
|
TCP = 1;
|
|
UDP = 2;
|
|
}
|
|
|
|
required SocketFamily family = 1;
|
|
required SocketProtocol protocol = 2;
|
|
|
|
repeated SocketOption socket_options = 3;
|
|
|
|
optional AddressPort proxy_external_ip = 4;
|
|
|
|
optional int32 listen_backlog = 5 [default=0];
|
|
|
|
optional AddressPort remote_ip = 6;
|
|
|
|
optional string app_id = 9;
|
|
|
|
optional int64 project_id = 10;
|
|
}
|
|
|
|
message CreateSocketReply {
|
|
optional string socket_descriptor = 1;
|
|
|
|
optional AddressPort server_address = 3;
|
|
|
|
optional AddressPort proxy_external_ip = 4;
|
|
|
|
extensions 1000 to max;
|
|
}
|
|
|
|
|
|
|
|
message BindRequest {
|
|
required string socket_descriptor = 1;
|
|
required AddressPort proxy_external_ip = 2;
|
|
}
|
|
|
|
message BindReply {
|
|
optional AddressPort proxy_external_ip = 1;
|
|
}
|
|
|
|
|
|
|
|
message GetSocketNameRequest {
|
|
required string socket_descriptor = 1;
|
|
}
|
|
|
|
message GetSocketNameReply {
|
|
optional AddressPort proxy_external_ip = 2;
|
|
}
|
|
|
|
|
|
|
|
message GetPeerNameRequest {
|
|
required string socket_descriptor = 1;
|
|
}
|
|
|
|
message GetPeerNameReply {
|
|
optional AddressPort peer_ip = 2;
|
|
}
|
|
|
|
|
|
message SocketOption {
|
|
|
|
enum SocketOptionLevel {
|
|
SOCKET_SOL_IP = 0;
|
|
SOCKET_SOL_SOCKET = 1;
|
|
SOCKET_SOL_TCP = 6;
|
|
SOCKET_SOL_UDP = 17;
|
|
}
|
|
|
|
enum SocketOptionName {
|
|
option allow_alias = true;
|
|
|
|
SOCKET_SO_DEBUG = 1;
|
|
SOCKET_SO_REUSEADDR = 2;
|
|
SOCKET_SO_TYPE = 3;
|
|
SOCKET_SO_ERROR = 4;
|
|
SOCKET_SO_DONTROUTE = 5;
|
|
SOCKET_SO_BROADCAST = 6;
|
|
SOCKET_SO_SNDBUF = 7;
|
|
SOCKET_SO_RCVBUF = 8;
|
|
SOCKET_SO_KEEPALIVE = 9;
|
|
SOCKET_SO_OOBINLINE = 10;
|
|
SOCKET_SO_LINGER = 13;
|
|
SOCKET_SO_RCVTIMEO = 20;
|
|
SOCKET_SO_SNDTIMEO = 21;
|
|
|
|
SOCKET_IP_TOS = 1;
|
|
SOCKET_IP_TTL = 2;
|
|
SOCKET_IP_HDRINCL = 3;
|
|
SOCKET_IP_OPTIONS = 4;
|
|
|
|
SOCKET_TCP_NODELAY = 1;
|
|
SOCKET_TCP_MAXSEG = 2;
|
|
SOCKET_TCP_CORK = 3;
|
|
SOCKET_TCP_KEEPIDLE = 4;
|
|
SOCKET_TCP_KEEPINTVL = 5;
|
|
SOCKET_TCP_KEEPCNT = 6;
|
|
SOCKET_TCP_SYNCNT = 7;
|
|
SOCKET_TCP_LINGER2 = 8;
|
|
SOCKET_TCP_DEFER_ACCEPT = 9;
|
|
SOCKET_TCP_WINDOW_CLAMP = 10;
|
|
SOCKET_TCP_INFO = 11;
|
|
SOCKET_TCP_QUICKACK = 12;
|
|
}
|
|
|
|
required SocketOptionLevel level = 1;
|
|
required SocketOptionName option = 2;
|
|
required bytes value = 3;
|
|
}
|
|
|
|
|
|
message SetSocketOptionsRequest {
|
|
required string socket_descriptor = 1;
|
|
repeated SocketOption options = 2;
|
|
}
|
|
|
|
message SetSocketOptionsReply {
|
|
}
|
|
|
|
message GetSocketOptionsRequest {
|
|
required string socket_descriptor = 1;
|
|
repeated SocketOption options = 2;
|
|
}
|
|
|
|
message GetSocketOptionsReply {
|
|
repeated SocketOption options = 2;
|
|
}
|
|
|
|
|
|
message ConnectRequest {
|
|
required string socket_descriptor = 1;
|
|
required AddressPort remote_ip = 2;
|
|
optional double timeout_seconds = 3 [default=-1];
|
|
}
|
|
|
|
message ConnectReply {
|
|
optional AddressPort proxy_external_ip = 1;
|
|
|
|
extensions 1000 to max;
|
|
}
|
|
|
|
|
|
message ListenRequest {
|
|
required string socket_descriptor = 1;
|
|
required int32 backlog = 2;
|
|
}
|
|
|
|
message ListenReply {
|
|
}
|
|
|
|
|
|
message AcceptRequest {
|
|
required string socket_descriptor = 1;
|
|
optional double timeout_seconds = 2 [default=-1];
|
|
}
|
|
|
|
message AcceptReply {
|
|
optional bytes new_socket_descriptor = 2;
|
|
optional AddressPort remote_address = 3;
|
|
}
|
|
|
|
|
|
|
|
message ShutDownRequest {
|
|
enum How {
|
|
SOCKET_SHUT_RD = 1;
|
|
SOCKET_SHUT_WR = 2;
|
|
SOCKET_SHUT_RDWR = 3;
|
|
}
|
|
required string socket_descriptor = 1;
|
|
required How how = 2;
|
|
required int64 send_offset = 3;
|
|
}
|
|
|
|
message ShutDownReply {
|
|
}
|
|
|
|
|
|
|
|
message CloseRequest {
|
|
required string socket_descriptor = 1;
|
|
optional int64 send_offset = 2 [default=-1];
|
|
}
|
|
|
|
message CloseReply {
|
|
}
|
|
|
|
|
|
|
|
message SendRequest {
|
|
required string socket_descriptor = 1;
|
|
required bytes data = 2 [ctype=CORD];
|
|
required int64 stream_offset = 3;
|
|
optional int32 flags = 4 [default=0];
|
|
optional AddressPort send_to = 5;
|
|
optional double timeout_seconds = 6 [default=-1];
|
|
}
|
|
|
|
message SendReply {
|
|
optional int32 data_sent = 1;
|
|
}
|
|
|
|
|
|
message ReceiveRequest {
|
|
enum Flags {
|
|
MSG_OOB = 1;
|
|
MSG_PEEK = 2;
|
|
}
|
|
required string socket_descriptor = 1;
|
|
required int32 data_size = 2;
|
|
optional int32 flags = 3 [default=0];
|
|
optional double timeout_seconds = 5 [default=-1];
|
|
}
|
|
|
|
message ReceiveReply {
|
|
optional int64 stream_offset = 2;
|
|
optional bytes data = 3 [ctype=CORD];
|
|
optional AddressPort received_from = 4;
|
|
optional int32 buffer_size = 5;
|
|
}
|
|
|
|
|
|
|
|
message PollEvent {
|
|
|
|
enum PollEventFlag {
|
|
SOCKET_POLLNONE = 0;
|
|
SOCKET_POLLIN = 1;
|
|
SOCKET_POLLPRI = 2;
|
|
SOCKET_POLLOUT = 4;
|
|
SOCKET_POLLERR = 8;
|
|
SOCKET_POLLHUP = 16;
|
|
SOCKET_POLLNVAL = 32;
|
|
SOCKET_POLLRDNORM = 64;
|
|
SOCKET_POLLRDBAND = 128;
|
|
SOCKET_POLLWRNORM = 256;
|
|
SOCKET_POLLWRBAND = 512;
|
|
SOCKET_POLLMSG = 1024;
|
|
SOCKET_POLLREMOVE = 4096;
|
|
SOCKET_POLLRDHUP = 8192;
|
|
};
|
|
|
|
required string socket_descriptor = 1;
|
|
required int32 requested_events = 2;
|
|
required int32 observed_events = 3;
|
|
}
|
|
|
|
message PollRequest {
|
|
repeated PollEvent events = 1;
|
|
optional double timeout_seconds = 2 [default=-1];
|
|
}
|
|
|
|
message PollReply {
|
|
repeated PollEvent events = 2;
|
|
}
|
|
|
|
message ResolveRequest {
|
|
required string name = 1;
|
|
repeated CreateSocketRequest.SocketFamily address_families = 2;
|
|
}
|
|
|
|
message ResolveReply {
|
|
enum ErrorCode {
|
|
SOCKET_EAI_ADDRFAMILY = 1;
|
|
SOCKET_EAI_AGAIN = 2;
|
|
SOCKET_EAI_BADFLAGS = 3;
|
|
SOCKET_EAI_FAIL = 4;
|
|
SOCKET_EAI_FAMILY = 5;
|
|
SOCKET_EAI_MEMORY = 6;
|
|
SOCKET_EAI_NODATA = 7;
|
|
SOCKET_EAI_NONAME = 8;
|
|
SOCKET_EAI_SERVICE = 9;
|
|
SOCKET_EAI_SOCKTYPE = 10;
|
|
SOCKET_EAI_SYSTEM = 11;
|
|
SOCKET_EAI_BADHINTS = 12;
|
|
SOCKET_EAI_PROTOCOL = 13;
|
|
SOCKET_EAI_OVERFLOW = 14;
|
|
SOCKET_EAI_MAX = 15;
|
|
};
|
|
|
|
repeated bytes packed_address = 2;
|
|
optional string canonical_name = 3;
|
|
repeated string aliases = 4;
|
|
}
|