diff options
author | lucko <git@lucko.me> | 2023-01-28 11:07:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-28 11:07:45 +0000 |
commit | 06b794dcea806150770fb88d43e366a3496a9d0f (patch) | |
tree | 15ed2a6b7de22d90844b67291250dab4ec14eeda /spark-common/src/main/proto/spark | |
parent | d83e49128ad59308f4b3ff19cf4b22b53236be8d (diff) | |
download | spark-06b794dcea806150770fb88d43e366a3496a9d0f.tar.gz spark-06b794dcea806150770fb88d43e366a3496a9d0f.tar.bz2 spark-06b794dcea806150770fb88d43e366a3496a9d0f.zip |
Stream live data to the viewer using WebSockets (#294)
Diffstat (limited to 'spark-common/src/main/proto/spark')
-rw-r--r-- | spark-common/src/main/proto/spark/spark_sampler.proto | 6 | ||||
-rw-r--r-- | spark-common/src/main/proto/spark/spark_ws.proto | 78 |
2 files changed, 84 insertions, 0 deletions
diff --git a/spark-common/src/main/proto/spark/spark_sampler.proto b/spark-common/src/main/proto/spark/spark_sampler.proto index 60cffac..dbc336a 100644 --- a/spark-common/src/main/proto/spark/spark_sampler.proto +++ b/spark-common/src/main/proto/spark/spark_sampler.proto @@ -15,6 +15,7 @@ message SamplerData { map<string, string> line_sources = 5; // optional repeated int32 time_windows = 6; map<int32, WindowStatistics> time_window_statistics = 7; + SocketChannelInfo channel_info = 8; } message SamplerMetadata { @@ -100,3 +101,8 @@ message StackTraceNode { repeated double times = 8; repeated int32 children_refs = 9; } + +message SocketChannelInfo { + string channel_id = 1; + bytes public_key = 2; +} diff --git a/spark-common/src/main/proto/spark/spark_ws.proto b/spark-common/src/main/proto/spark/spark_ws.proto new file mode 100644 index 0000000..97b5480 --- /dev/null +++ b/spark-common/src/main/proto/spark/spark_ws.proto @@ -0,0 +1,78 @@ +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; +} |