Protocol: Add support for lists in Serializer
This commit is contained in:
parent
ea0128c50b
commit
4fd8d47d7e
@ -297,6 +297,17 @@ impl ByteBuffer {
|
|||||||
self.buffer.put_slice(src)
|
self.buffer.put_slice(src)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn put<T: Buf>(&mut self, mut src: T)
|
||||||
|
where
|
||||||
|
Self: Sized,
|
||||||
|
{
|
||||||
|
self.buffer.put(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn reserve(&mut self, additional: usize) {
|
||||||
|
self.buffer.reserve(additional)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_slice(&mut self) -> BytesMut {
|
pub fn get_slice(&mut self) -> BytesMut {
|
||||||
self.buffer.split()
|
self.buffer.split()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
|
use bytes::Buf;
|
||||||
use serde::{ser, Serialize};
|
use serde::{ser, Serialize};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
|
use crate::VarInt;
|
||||||
|
|
||||||
use super::ByteBuffer;
|
use super::ByteBuffer;
|
||||||
|
|
||||||
pub struct Serializer {
|
pub struct Serializer {
|
||||||
@ -123,8 +126,12 @@ impl<'a> ser::Serializer for &'a mut Serializer {
|
|||||||
fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
|
fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
fn serialize_seq(self, _len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
|
fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
|
||||||
unimplemented!()
|
if let Some(len) = len {
|
||||||
|
self.output.reserve(len);
|
||||||
|
self.output.put_var_int(&VarInt(len as i32));
|
||||||
|
}
|
||||||
|
Ok(self)
|
||||||
}
|
}
|
||||||
fn serialize_some<T>(self, _value: &T) -> Result<Self::Ok, Self::Error>
|
fn serialize_some<T>(self, _value: &T) -> Result<Self::Ok, Self::Error>
|
||||||
where
|
where
|
||||||
@ -213,16 +220,16 @@ impl<'a> ser::SerializeSeq for &'a mut Serializer {
|
|||||||
type Error = SerializerError;
|
type Error = SerializerError;
|
||||||
|
|
||||||
// Serialize a single element of the sequence.
|
// Serialize a single element of the sequence.
|
||||||
fn serialize_element<T>(&mut self, _value: &T) -> Result<(), Self::Error>
|
fn serialize_element<T>(&mut self, value: &T) -> Result<(), Self::Error>
|
||||||
where
|
where
|
||||||
T: ?Sized + Serialize,
|
T: ?Sized + Serialize,
|
||||||
{
|
{
|
||||||
todo!()
|
value.serialize(&mut **self)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close the sequence.
|
// Close the sequence.
|
||||||
fn end(self) -> Result<(), Self::Error> {
|
fn end(self) -> Result<(), Self::Error> {
|
||||||
todo!()
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user