Skip to content

Commit 5397a1c

Browse files
committed
feat: add take_buffer method for packets
1 parent 2a51471 commit 5397a1c

File tree

5 files changed

+28
-6
lines changed

5 files changed

+28
-6
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ cargo fmt --all -- --check
2727

2828
Generate test coverage report (cargo-tarpaulin)
2929
```shell script
30-
docker run --rm -it --security-opt seccomp=unconfined -v "${PWD}:/volume" xd009642/tarpaulin sh -c "cargo tarpaulin --out Html"
30+
docker run --rm -it --security-opt seccomp=unconfined -v "${PWD}:/volume" xd009642/tarpaulin sh -c "cargo tarpaulin --ignore-tests --out Html"
3131
#docker run --rm -it --security-opt seccomp=unconfined -v "${PWD}:/volume" xd009642/tarpaulin sh -c "cargo tarpaulin --run-types Doctests --all"
3232
#docker run --rm -it --security-opt seccomp=unconfined -v "${PWD}:/volume" xd009642/tarpaulin sh -c "cargo tarpaulin --run-types Tests --all"
3333
#docker run --rm -it --security-opt seccomp=unconfined -v "${PWD}:/volume" xd009642/tarpaulin sh -c "cargo tarpaulin --run-types Doctests Tests --all"

src/protocol/addr.rs

+4
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ impl<T: AsRef<[u8]>> HasAddr<T> {
130130
}
131131
Ok(())
132132
}
133+
134+
pub fn take_buffer(self) -> T {
135+
self.buffer
136+
}
133137
}
134138

135139
impl<'a, T: AsRef<[u8]> + ?Sized> HasAddr<&'a T> {

src/protocol/cmd_rep.rs

+4
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@ impl<T: AsRef<[u8]>> Packet<T> {
198198
pub fn port(&self) -> u16 {
199199
self.0.port()
200200
}
201+
202+
pub fn take_buffer(self) -> T {
203+
self.0.take_buffer()
204+
}
201205
}
202206

203207
impl<'a, T: AsRef<[u8]> + ?Sized> Packet<&'a T> {

src/protocol/method_selection.rs

+8
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ impl<T: AsRef<[u8]>> RequestPacket<T> {
7272
let methods = &data[field::methods(self.nmethods())];
7373
Method::try_from_slice(methods)
7474
}
75+
76+
pub fn take_buffer(self) -> T {
77+
self.buffer
78+
}
7579
}
7680

7781
impl<'a, T: AsRef<[u8]> + ?Sized> RequestPacket<&'a T> {
@@ -263,6 +267,10 @@ impl<T: AsRef<[u8]>> ReplyPacket<T> {
263267
let data = self.buffer.as_ref();
264268
data[field::METHOD]
265269
}
270+
271+
pub fn take_buffer(self) -> T {
272+
self.buffer
273+
}
266274
}
267275

268276
impl<T: AsRef<[u8]> + AsMut<[u8]>> ReplyPacket<T> {

src/protocol/rfc1929.rs

+11-5
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ impl<T: AsRef<[u8]>> RequestPacket<T> {
168168
let data = self.buffer.as_ref();
169169
data[self.pos_plen()]
170170
}
171+
172+
pub fn take_buffer(self) -> T {
173+
self.buffer
174+
}
171175
}
172176

173177
impl<'a, T: AsRef<[u8]> + ?Sized> RequestPacket<&'a T> {
@@ -389,6 +393,10 @@ impl<T: AsRef<[u8]>> ReplyPacket<T> {
389393
let data = self.buffer.as_ref();
390394
data[field::STATUS]
391395
}
396+
397+
pub fn take_buffer(self) -> T {
398+
self.buffer
399+
}
392400
}
393401

394402
impl<T: AsRef<[u8]> + AsMut<[u8]>> ReplyPacket<T> {
@@ -688,13 +696,12 @@ mod tests {
688696
let mut bytes_mut = BytesMut::new();
689697
ReplyRepr::encode(&repr, &mut bytes_mut).expect("should encode");
690698
let pkt = ReplyPacket::new_checked(bytes_mut.as_ref()).expect("new packet should success");
691-
assert_eq!(pkt.version(), repr.ver as u8);
699+
assert_eq!(pkt.version(), Ver::X01 as u8);
692700
assert_eq!(pkt.status(), repr.status as u8);
693701

694702
let decoded = ReplyRepr::decode(&mut bytes_mut)
695703
.expect("decode should success")
696704
.expect("should present");
697-
assert_eq!(decoded.ver, Ver::X01);
698705
assert_eq!(decoded.status, Status::Failure);
699706
}
700707

@@ -708,15 +715,14 @@ mod tests {
708715
ReplyRepr::encode(&repr, &mut bytes_mut).expect("should encode");
709716
let pkt = ReplyPacket::new_checked(bytes_mut.as_ref()).expect("new packet should success");
710717
assert_eq!(pkt.total_len(), 2);
711-
assert_eq!(pkt.version(), repr.ver as u8);
718+
assert_eq!(pkt.version(), Ver::X01 as u8);
712719
assert_eq!(pkt.status(), repr.status as u8);
713-
assert_eq!(pkt.as_ref()[0], repr.ver as u8);
720+
assert_eq!(pkt.as_ref()[0], Ver::X01 as u8);
714721
assert_eq!(pkt.as_ref()[1], repr.status as u8);
715722

716723
let decoded = ReplyRepr::decode(&mut bytes_mut)
717724
.expect("decode should success")
718725
.expect("should present");
719-
assert_eq!(decoded.ver, Ver::X01);
720726
assert_eq!(decoded.status, Status::Success);
721727
}
722728

0 commit comments

Comments
 (0)