From bb1c93b98ad1d41a6799886ab633dbf4cc5021bd Mon Sep 17 00:00:00 2001 From: Khor Shu Heng <32997938+khorshuheng@users.noreply.github.com> Date: Mon, 5 Aug 2024 23:44:34 +0800 Subject: [PATCH] chore: replace bincode serialization with protobuf for collab stream (#715) --- libs/collab-stream/src/model.rs | 17 +++++++---------- libs/collab-stream/src/pubsub.rs | 4 ++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/libs/collab-stream/src/model.rs b/libs/collab-stream/src/model.rs index 21e92524..ec880132 100644 --- a/libs/collab-stream/src/model.rs +++ b/libs/collab-stream/src/model.rs @@ -6,6 +6,7 @@ use std::ops::Deref; use std::str::FromStr; use crate::error::{internal, StreamError}; +use prost::Message; use redis::streams::StreamId; use redis::{FromRedisValue, RedisError, RedisResult, Value}; use serde::{Deserialize, Serialize}; @@ -327,8 +328,8 @@ impl CollabUpdateEvent { } } - pub fn encode(&self) -> Result, bincode::Error> { - bincode::serialize(self) + pub fn encode(&self) -> Vec { + self.to_proto().encode_to_vec() } pub fn decode(data: &[u8]) -> Result { @@ -346,14 +347,13 @@ impl TryFrom for StreamBinary { type Error = StreamError; fn try_from(value: CollabUpdateEvent) -> Result { - let raw_data = value.encode()?; + let raw_data = value.encode(); Ok(StreamBinary(raw_data)) } } #[cfg(test)] mod test { - use prost::Message; #[test] fn test_collab_update_event_decoding() { @@ -361,11 +361,8 @@ mod test { let event = super::CollabUpdateEvent::UpdateV1 { encode_update: encoded_update.clone(), }; - let bincode_encoded = event.encode().unwrap(); - let protobuf_encoded = event.to_proto().encode_to_vec(); - let decoded_from_bincode = super::CollabUpdateEvent::decode(&bincode_encoded).unwrap(); - let decoded_from_protobuf = super::CollabUpdateEvent::decode(&protobuf_encoded).unwrap(); - assert_eq!(event, decoded_from_bincode); - assert_eq!(event, decoded_from_protobuf); + let encoded = event.encode(); + let decoded = super::CollabUpdateEvent::decode(&encoded).unwrap(); + assert_eq!(event, decoded); } } diff --git a/libs/collab-stream/src/pubsub.rs b/libs/collab-stream/src/pubsub.rs index f806b92f..abe88038 100644 --- a/libs/collab-stream/src/pubsub.rs +++ b/libs/collab-stream/src/pubsub.rs @@ -93,8 +93,8 @@ impl ToRedisArgs for PubSubMessage { where W: ?Sized + RedisWrite, { - let json = bincode::serialize(self).unwrap(); - json.write_redis_args(out); + let proto = self.to_proto().encode_to_vec(); + proto.write_redis_args(out); } }