Browse Source

Rename {En,De}coder to LengthPrefixed{En,De}coder.

wip
Titouan Rigoudy 7 years ago
parent
commit
8faee7dbea
1 changed files with 15 additions and 17 deletions
  1. +15
    -17
      src/proto/codec.rs

+ 15
- 17
src/proto/codec.rs View File

@ -13,11 +13,11 @@ use super::server::{ServerRequest, ServerResponse};
*===================================*/
// Encodes types that implement ProtoEncode with a length prefix.
pub struct Encoder<T> {
pub struct LengthPrefixedEncoder<T> {
phantom: marker::PhantomData<T>,
}
impl<T> Encoder<T> {
impl<T> LengthPrefixedEncoder<T> {
pub fn new() -> Self {
Self {
phantom: marker::PhantomData,
@ -25,7 +25,7 @@ impl<T> Encoder<T> {
}
}
impl<T: ProtoEncode> tokio_codec::Encoder for Encoder<T> {
impl<T: ProtoEncode> tokio_codec::Encoder for LengthPrefixedEncoder<T> {
type Item = T;
type Error = io::Error;
@ -47,7 +47,7 @@ impl<T: ProtoEncode> tokio_codec::Encoder for Encoder<T> {
}
// Decodes length-prefixed values from byte buffers.
pub struct Decoder<T> {
pub struct LengthPrefixedDecoder<T> {
// The length, as a number of bytes, of the next item to decode.
// None if we have not read the length prefix yet.
// Some(n) if we read the length prefix, and are now waiting for `n` bytes
@ -58,7 +58,7 @@ pub struct Decoder<T> {
phantom: marker::PhantomData<T>,
}
impl<T> Decoder<T> {
impl<T> LengthPrefixedDecoder<T> {
pub fn new() -> Self {
Self {
length: None,
@ -92,7 +92,7 @@ impl<T> Decoder<T> {
}
}
impl<T: ProtoDecode> tokio_codec::Decoder for Decoder<T> {
impl<T: ProtoDecode> tokio_codec::Decoder for LengthPrefixedDecoder<T> {
type Item = T;
type Error = io::Error;
@ -125,9 +125,7 @@ mod tests {
use proto::ProtoEncode;
// Avoid name conflict with tokio_codec traits.
use super::Decoder as MyDecoder;
use super::Encoder as MyEncoder;
use super::{LengthPrefixedDecoder, LengthPrefixedEncoder};
// Test value: [1, 3, 3, 7] in little-endian.
const U32_1337: u32 = 1 + (3 << 8) + (3 << 16) + (7 << 24);
@ -135,7 +133,7 @@ mod tests {
#[test]
fn encode_u32() {
let mut bytes = BytesMut::new();
MyEncoder::new().encode(U32_1337, &mut bytes).unwrap();
LengthPrefixedEncoder::new().encode(U32_1337, &mut bytes).unwrap();
assert_eq!(
bytes,
@ -151,7 +149,7 @@ mod tests {
let v: Vec<u32> = vec![1, 3, 3, 7];
let mut bytes = BytesMut::new();
MyEncoder::new().encode(v, &mut bytes).unwrap();
LengthPrefixedEncoder::new().encode(v, &mut bytes).unwrap();
assert_eq!(
bytes,
@ -172,7 +170,7 @@ mod tests {
4, 0, 0, // Incomplete 32-bit length prefix.
]);
let value: Option<u32> = MyDecoder::new().decode(&mut bytes).unwrap();
let value: Option<u32> = LengthPrefixedDecoder::new().decode(&mut bytes).unwrap();
assert_eq!(value, None);
assert_eq!(bytes, vec![4, 0, 0]); // Untouched.
@ -186,7 +184,7 @@ mod tests {
4, 2, // Trailing bytes.
]);
let value = MyDecoder::new().decode(&mut bytes).unwrap();
let value = LengthPrefixedDecoder::new().decode(&mut bytes).unwrap();
assert_eq!(value, Some(U32_1337));
assert_eq!(bytes, vec![4, 2]); // Decoded bytes were split off.
@ -204,7 +202,7 @@ mod tests {
4, 2, // Trailing bytes.
]);
let value = MyDecoder::new().decode(&mut bytes).unwrap();
let value = LengthPrefixedDecoder::new().decode(&mut bytes).unwrap();
let expected_value: Vec<u32> = vec![1, 3, 3, 7];
assert_eq!(value, Some(expected_value));
@ -213,7 +211,7 @@ mod tests {
#[test]
fn decode_stateful() {
let mut decoder = MyDecoder::new();
let mut decoder = LengthPrefixedDecoder::new();
let mut bytes = BytesMut::from(vec![
4, 0, 0, 0, // 32-bit integer = 4 bytes.
@ -256,8 +254,8 @@ mod tests {
let mut buffer = BytesMut::new();
MyEncoder::new().encode(value.clone(), &mut buffer).unwrap();
let decoded = MyDecoder::new().decode(&mut buffer).unwrap();
LengthPrefixedEncoder::new().encode(value.clone(), &mut buffer).unwrap();
let decoded = LengthPrefixedDecoder::new().decode(&mut buffer).unwrap();
assert_eq!(decoded, Some(value));
assert_eq!(buffer, vec![]);


Loading…
Cancel
Save