Skip to content

Commit db6afa3

Browse files
committed
refactor(record): tighten metered wrapper boundary
1 parent ccc2a00 commit db6afa3

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

common/src/record/metering.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ pub trait MeteredExt: MeteredSize + Sized {
3333
impl<T> MeteredExt for T where T: MeteredSize {}
3434

3535
pub struct Metered<T> {
36-
pub(super) size: usize,
37-
pub(super) inner: T,
36+
size: usize,
37+
inner: T,
3838
}
3939

4040
impl<T> Metered<T> {
41-
pub(crate) const fn with_size(size: usize, inner: T) -> Self {
41+
pub(super) const fn with_size(size: usize, inner: T) -> Self {
4242
Self { size, inner }
4343
}
4444

common/src/record/mod.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ impl StoredRecord {
232232
}
233233
}
234234

235-
fn encode_body_size(&self) -> usize {
235+
fn encoded_body_size(&self) -> usize {
236236
match self {
237237
Self::Plaintext(Record::Command(record)) => record.encoded_size(),
238238
Self::Plaintext(Record::Envelope(record)) => record.encoded_size(),
@@ -318,7 +318,7 @@ pub trait Encodable {
318318

319319
impl Encodable for Metered<&StoredRecord> {
320320
fn encoded_size(&self) -> usize {
321-
1 + self.magic_byte().metered_size_varlen as usize + self.inner.encode_body_size()
321+
1 + self.magic_byte().metered_size_varlen as usize + self.encoded_body_size()
322322
}
323323

324324
fn encode_into(&self, buf: &mut impl BufMut) {
@@ -328,7 +328,7 @@ impl Encodable for Metered<&StoredRecord> {
328328
self.metered_size() as u64,
329329
magic_byte.metered_size_varlen as usize,
330330
);
331-
self.inner.encode_body_into(buf);
331+
self.encode_body_into(buf);
332332
}
333333
}
334334

@@ -391,7 +391,10 @@ where
391391
T: MeteredSize,
392392
{
393393
pub fn sequenced(self, position: StreamPosition) -> Metered<Sequenced<T>> {
394-
Metered::with_size(self.size, Sequenced::new(position, self.inner))
394+
Metered::with_size(
395+
self.metered_size(),
396+
Sequenced::new(position, self.into_inner()),
397+
)
395398
}
396399
}
397400

@@ -403,7 +406,7 @@ impl Metered<&StoredRecord> {
403406
panic!("illegal metered size varlen {metered_size} for record")
404407
}
405408
MagicByte {
406-
record_type: self.inner.record_type(),
409+
record_type: self.record_type(),
407410
metered_size_varlen,
408411
}
409412
}
@@ -456,7 +459,7 @@ impl TryFrom<Bytes> for Metered<Record> {
456459

457460
fn try_from(buf: Bytes) -> Result<Self, Self::Error> {
458461
let stored: Metered<StoredRecord> = buf.try_into()?;
459-
let size = stored.size;
462+
let size = stored.metered_size();
460463
match stored.into_inner() {
461464
StoredRecord::Plaintext(record) => Ok(record),
462465
StoredRecord::Encrypted { .. } => Err(InternalRecordError::InvalidValue(
@@ -470,13 +473,14 @@ impl TryFrom<Bytes> for Metered<Record> {
470473

471474
impl<T> Metered<Sequenced<T>> {
472475
pub fn parts(&self) -> (StreamPosition, Metered<&T>) {
473-
let (position, inner) = self.inner.parts();
474-
(position, Metered::with_size(self.size, inner))
476+
let size = self.metered_size();
477+
let (position, inner) = self.as_ref().into_inner().parts();
478+
(position, Metered::with_size(size, inner))
475479
}
476480

477481
pub fn into_parts(self) -> (StreamPosition, Metered<T>) {
478-
let size = self.size;
479-
let (position, inner) = self.inner.into_parts();
482+
let size = self.metered_size();
483+
let (position, inner) = self.into_inner().into_parts();
480484
(position, Metered::with_size(size, inner))
481485
}
482486
}

0 commit comments

Comments
 (0)