syntax = "proto3"; package spark; import "spark/spark.proto"; import "spark/spark_sampler.proto"; option java_package = "me.lucko.spark.proto"; option java_outer_classname = "SparkWebSocketProtos"; message RawPacket { int32 version = 1; bytes public_key = 2; bytes signature = 3; bytes message = 4; } message PacketWrapper { oneof packet { // server -> client ServerPong server_pong = 1; ServerConnectResponse server_connect_response = 2; ServerUpdateSamplerData server_update_sampler = 3; ServerUpdateStatistics server_update_statistics = 4; // client -> server ClientPing client_ping = 10; ClientConnect client_connect = 11; } } // (signed) Sent from the server -> client in response to a ping message ServerPong { bool ok = 1; int32 data = 2; } // (signed) Sent from the server -> client in response to a connection request message ServerConnectResponse { string client_id = 1; State state = 2; Settings settings = 3; string last_payload_id = 4; enum State { ACCEPTED = 0; UNTRUSTED = 1; REJECTED = 2; } message Settings { int32 statistics_interval = 1; int32 sampler_interval = 2; } } // (signed) Sent from the server -> client when there is new sampler data message ServerUpdateSamplerData { string payload_id = 1; } // (signed) Sent from the server -> client periodically to update statistics shown in widgets message ServerUpdateStatistics { PlatformStatistics platform = 1; SystemStatistics system = 2; } // (unsigned) Sent from the client -> server on initial connection message ClientConnect { string client_id = 1; string description = 2; } // (unsigned) Sent from the client -> server to check for responsiveness message ClientPing { bool ok = 1; int32 data = 2; }