option optimize_for = SPEED;
option cc_generic_services = false;

enum NetPacketStatus_t {
	PACKET_STATUS_NORMAL = 0;
	PACKET_STATUS_DROPPED = 1;
	PACKET_STATUS_INVALID = 2;
	PACKET_STATUS_COUNT = 3;
}

message NetGraphGroupNames {
	message NetGraphGroup_t {
		optional string name = 1;
		optional fixed32 color = 2;
	}

	repeated .NetGraphGroupNames.NetGraphGroup_t group_names = 1;
}

message NetGraphMsgBits {
	optional int32 group_index = 1;
	optional int32 bits = 2;
}

message NetBandwithGraph {
	optional int32 unreliable_bits = 1;
	optional int32 reliable_bits = 2;
	optional float latency_seconds = 3;
	optional .NetPacketStatus_t packet_status = 4 [default = PACKET_STATUS_NORMAL];
	repeated .NetGraphMsgBits msgbits_unreliable = 5;
	repeated .NetGraphMsgBits msgbits_reliable = 6;
}

message NetCmdInfo {
	optional float render_interpolation_fraction = 1;
	optional int32 bits = 2;
	optional bool sent = 3;
}

message NetGraphData {
	optional float updaterate = 1;
	optional float cmdrate = 2;
	optional float framerate = 3;
	optional float client_interpolation_amount = 4;
	optional float avg_latency_peer = 5;
	optional float avg_latency_local = 6;
	optional float avg_latency_net = 7;
	optional float avg_packet_loss = 8;
	optional int32 incoming_sequence_start = 9;
	optional int32 outgoing_sequence_start = 10;
	optional int32 incoming_sequence = 11;
	optional int32 outgoing_sequence = 12;
	optional float incoming_data_bytespersecond = 13;
	optional float outgoing_data_bytespersecond = 14;
	optional float avg_packet_in = 15;
	optional float avg_packet_out = 16;
	optional float server_framerate = 17;
	optional float server_framerate_stddev = 18;
	repeated .NetBandwithGraph graph = 20;
	repeated .NetCmdInfo cmd_info = 21;
}

