]> git.sesse.net Git - cubemap/blob - state.proto
Set close-on-exec on all file descriptors we open.
[cubemap] / state.proto
1 syntax = "proto2";
2
3 // Corresponds to struct Client.
4 message ClientProto {
5         optional int32 sock = 1;
6         optional string remote_addr = 8;
7         optional int64 connect_time_sec = 13;
8         optional int32 connect_time_nsec = 14;
9         optional int32 state = 2;
10         optional bytes request = 3;
11         optional string url = 4;
12         optional bytes header_or_short_response_old = 5;  // Only for pre-1.4.0 servers. Use header_or_short_response_index instead.
13         optional int64 header_or_short_response_index = 21;  // Index into CubemapStateProto.short_response_pool.
14         optional int64 header_or_short_response_bytes_sent = 6;
15         optional int64 stream_pos = 7;
16         optional int64 stream_pos_end = 20 [default=-1];
17         optional int64 bytes_sent = 10;
18         optional int64 bytes_lost = 11;
19         optional int64 num_loss_events = 12;
20         optional bytes referer = 15;
21         optional bytes user_agent = 16;
22         optional bytes tls_context = 17;  // If not present, then not using TLS for this client.
23         optional int64 tls_output_bytes_already_consumed = 18;
24         optional bool in_ktls_mode = 19;
25         optional bytes x_playback_session_id = 22;
26         optional bool close_after_response = 23 [default=true];
27         optional bool http_11 = 24 [default=false];
28 };
29
30 // Corresponds to struct Stream::FragmentStart.
31 message FragmentStartProto {
32         optional int64 byte_position = 1;
33         optional double pts = 2;
34         optional bool begins_header = 3 [default=false];
35 };
36
37 // Corresponds to struct Stream.
38 message StreamProto {
39         optional bool unavailable = 14 [default=false];
40         optional bytes http_header = 6;
41         optional bytes stream_header = 7;
42         repeated int32 data_fds = 8;
43         optional int64 backlog_size = 5 [default=10485760];
44         // Tag 10 is unused from 1.4.0 up (it used to be prebuffering_bytes).
45         optional int64 bytes_received = 3;
46         repeated int64 suitable_starting_point = 9;
47         repeated FragmentStartProto fragment = 11;
48         optional int64 first_fragment_index = 12;
49         optional int64 discontinuity_counter = 13;
50         optional string url = 4;
51 };
52
53 // Corresponds to class Input.
54 message InputProto {
55         optional int32 state = 1;
56         optional string url = 3;
57         optional bytes request = 4;
58         optional int32 request_bytes_sent = 5;
59         optional bytes response = 6;
60         optional bytes http_header = 10;
61         optional bytes stream_header = 14;
62         optional bytes pending_data = 7;
63         optional bool has_metacube_header = 8;
64         optional int32 sock = 9;
65         optional int64 bytes_received = 11;
66         optional int64 data_bytes_received = 12;
67         optional int64 metadata_bytes_received = 16;
68         optional double latency_sec = 17;
69         optional int64 connect_time = 13;
70         optional bool is_metacube_encoded = 15 [default=true];
71 };
72
73 // Corresponds to class Acceptor.
74 message AcceptorProto {
75         optional int32 server_sock = 1;
76         optional int32 port = 2;
77         optional string addr = 3;  // As a string. Empty is equivalent to "::".
78         optional bytes certificate_chain = 4;
79         optional bytes private_key = 5;
80 };
81
82 // For deduplicating strings in header_or_short_response.
83 message ShortResponsePool {
84         optional bytes header_or_short_response = 1;
85 };
86
87 message HLSZombieProto {
88         optional bytes key = 1;
89         optional bytes remote_addr = 2;
90         optional bytes url = 3;
91         optional bytes referer = 4;
92         optional bytes user_agent = 5;
93         optional int64 expires_sec = 6;
94         optional int64 expires_nsec = 7;
95 };
96
97 message CubemapStateProto {
98         optional int64 serialize_start_sec = 6;
99         optional int64 serialize_start_usec = 7;
100         repeated ClientProto clients = 1;
101         repeated StreamProto streams = 2;
102         repeated InputProto inputs = 5;
103         repeated AcceptorProto acceptors = 8;
104         repeated ShortResponsePool short_response_pool = 9;
105         repeated HLSZombieProto hls_zombies = 10;
106 };