chore: replace bincode serialization with protobuf for collab stream (#715)
This commit is contained in:
parent
21bbfa828e
commit
bb1c93b98a
|
|
@ -6,6 +6,7 @@ use std::ops::Deref;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
use crate::error::{internal, StreamError};
|
use crate::error::{internal, StreamError};
|
||||||
|
use prost::Message;
|
||||||
use redis::streams::StreamId;
|
use redis::streams::StreamId;
|
||||||
use redis::{FromRedisValue, RedisError, RedisResult, Value};
|
use redis::{FromRedisValue, RedisError, RedisResult, Value};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
@ -327,8 +328,8 @@ impl CollabUpdateEvent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn encode(&self) -> Result<Vec<u8>, bincode::Error> {
|
pub fn encode(&self) -> Vec<u8> {
|
||||||
bincode::serialize(self)
|
self.to_proto().encode_to_vec()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn decode(data: &[u8]) -> Result<Self, StreamError> {
|
pub fn decode(data: &[u8]) -> Result<Self, StreamError> {
|
||||||
|
|
@ -346,14 +347,13 @@ impl TryFrom<CollabUpdateEvent> for StreamBinary {
|
||||||
type Error = StreamError;
|
type Error = StreamError;
|
||||||
|
|
||||||
fn try_from(value: CollabUpdateEvent) -> Result<Self, Self::Error> {
|
fn try_from(value: CollabUpdateEvent) -> Result<Self, Self::Error> {
|
||||||
let raw_data = value.encode()?;
|
let raw_data = value.encode();
|
||||||
Ok(StreamBinary(raw_data))
|
Ok(StreamBinary(raw_data))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use prost::Message;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_collab_update_event_decoding() {
|
fn test_collab_update_event_decoding() {
|
||||||
|
|
@ -361,11 +361,8 @@ mod test {
|
||||||
let event = super::CollabUpdateEvent::UpdateV1 {
|
let event = super::CollabUpdateEvent::UpdateV1 {
|
||||||
encode_update: encoded_update.clone(),
|
encode_update: encoded_update.clone(),
|
||||||
};
|
};
|
||||||
let bincode_encoded = event.encode().unwrap();
|
let encoded = event.encode();
|
||||||
let protobuf_encoded = event.to_proto().encode_to_vec();
|
let decoded = super::CollabUpdateEvent::decode(&encoded).unwrap();
|
||||||
let decoded_from_bincode = super::CollabUpdateEvent::decode(&bincode_encoded).unwrap();
|
assert_eq!(event, decoded);
|
||||||
let decoded_from_protobuf = super::CollabUpdateEvent::decode(&protobuf_encoded).unwrap();
|
|
||||||
assert_eq!(event, decoded_from_bincode);
|
|
||||||
assert_eq!(event, decoded_from_protobuf);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -93,8 +93,8 @@ impl ToRedisArgs for PubSubMessage {
|
||||||
where
|
where
|
||||||
W: ?Sized + RedisWrite,
|
W: ?Sized + RedisWrite,
|
||||||
{
|
{
|
||||||
let json = bincode::serialize(self).unwrap();
|
let proto = self.to_proto().encode_to_vec();
|
||||||
json.write_redis_args(out);
|
proto.write_redis_args(out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue