Skip to content

Commit 2cdda7a

Browse files
committed
refactor
1 parent 521516f commit 2cdda7a

File tree

8 files changed

+27
-26
lines changed

8 files changed

+27
-26
lines changed

git-packetline/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ pub enum Channel {
1818
pub mod borrowed;
1919
pub use borrowed::Borrowed as PacketLine;
2020

21-
pub mod reader;
21+
pub mod provider;
2222
#[doc(inline)]
23-
pub use reader::Reader;
23+
pub use provider::Provider;
2424

2525
pub mod write;
2626
pub use write::Writer;

git-packetline/src/reader/mod.rs renamed to git-packetline/src/provider/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pub use read::ReadWithSidebands;
99
/// Read pack lines one after another, without consuming more than needed from the underlying
1010
/// `Read`. `Flush` lines cause the reader to stop producing lines forever, leaving `Read` at the
1111
/// start of whatever comes next.
12-
pub struct Reader<T> {
12+
pub struct Provider<T> {
1313
inner: T,
1414
peek_buf: Vec<u8>,
1515
fail_on_err_lines: bool,
@@ -18,12 +18,12 @@ pub struct Reader<T> {
1818
is_done: bool,
1919
}
2020

21-
impl<T> Reader<T>
21+
impl<T> Provider<T>
2222
where
2323
T: io::Read,
2424
{
2525
pub fn new(inner: T, delimiter: impl Into<Option<PacketLine<'static>>>) -> Self {
26-
Reader {
26+
Provider {
2727
inner,
2828
buf: vec![0; MAX_LINE_LEN],
2929
peek_buf: Vec::new(),

git-packetline/src/reader/read.rs renamed to git-packetline/src/provider/read.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use crate::{
22
borrowed::{Band, Text},
3-
Reader, MAX_DATA_LEN,
3+
Provider, MAX_DATA_LEN,
44
};
55
use std::io;
66

77
pub struct ReadWithSidebands<'a, T, F>
88
where
99
T: io::Read,
1010
{
11-
parent: &'a mut Reader<T>,
11+
parent: &'a mut Provider<T>,
1212
handle_progress: Option<F>,
1313
buf: Vec<u8>,
1414
pos: usize,
@@ -28,7 +28,7 @@ impl<'a, T> ReadWithSidebands<'a, T, fn(bool, &[u8])>
2828
where
2929
T: io::Read,
3030
{
31-
pub fn new(parent: &'a mut Reader<T>) -> Self {
31+
pub fn new(parent: &'a mut Provider<T>) -> Self {
3232
ReadWithSidebands {
3333
parent,
3434
handle_progress: None,
@@ -44,7 +44,7 @@ where
4444
T: io::Read,
4545
F: FnMut(bool, &[u8]),
4646
{
47-
pub fn with_progress_handler(parent: &'a mut Reader<T>, handle_progress: F) -> Self {
47+
pub fn with_progress_handler(parent: &'a mut Provider<T>, handle_progress: F) -> Self {
4848
ReadWithSidebands {
4949
parent,
5050
handle_progress: Some(handle_progress),

git-packetline/tests/packet_line/reader/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fn first_line() -> PacketLine<'static> {
1717
}
1818
#[test]
1919
fn peek_non_data() -> crate::Result {
20-
let mut rd = git_packetline::Reader::new(&b"000000010002"[..], Some(PacketLine::ResponseEnd));
20+
let mut rd = git_packetline::Provider::new(&b"000000010002"[..], Some(PacketLine::ResponseEnd));
2121
assert_eq!(rd.read_line().expect("line")??, PacketLine::Flush);
2222
assert_eq!(rd.read_line().expect("line")??, PacketLine::Delimiter);
2323
rd.reset_with(PacketLine::Flush);
@@ -35,15 +35,15 @@ fn peek_non_data() -> crate::Result {
3535
#[test]
3636
fn fail_on_err_lines() -> crate::Result {
3737
let input = b"00010009ERR e0002";
38-
let mut rd = git_packetline::Reader::new(&input[..], None);
38+
let mut rd = git_packetline::Provider::new(&input[..], None);
3939
assert_eq!(rd.read_line().expect("line")??, PacketLine::Delimiter);
4040
assert_eq!(
4141
rd.read_line().expect("line")??.as_bstr(),
4242
Some(b"ERR e".as_bstr()),
4343
"by default no special handling"
4444
);
4545

46-
let mut rd = git_packetline::Reader::new(&input[..], None);
46+
let mut rd = git_packetline::Provider::new(&input[..], None);
4747
rd.fail_on_err_lines(true);
4848
assert_eq!(rd.read_line().expect("line")??, PacketLine::Delimiter);
4949
assert_eq!(
@@ -67,7 +67,7 @@ fn fail_on_err_lines() -> crate::Result {
6767
#[test]
6868
fn peek() -> crate::Result {
6969
let bytes = fixture_bytes("v1/fetch/01-many-refs.response");
70-
let mut rd = git_packetline::Reader::new(&bytes[..], None);
70+
let mut rd = git_packetline::Provider::new(&bytes[..], None);
7171
assert_eq!(rd.peek_line().expect("line")??, first_line(), "peek returns first line");
7272
assert_eq!(
7373
rd.peek_line().expect("line")??,
@@ -97,7 +97,7 @@ fn peek() -> crate::Result {
9797
fn read_from_file_and_reader_advancement() -> crate::Result {
9898
let mut bytes = fixture_bytes("v1/fetch/01-many-refs.response");
9999
bytes.extend(fixture_bytes("v1/fetch/01-many-refs.response").into_iter());
100-
let mut rd = git_packetline::Reader::new(&bytes[..], None);
100+
let mut rd = git_packetline::Provider::new(&bytes[..], None);
101101
assert_eq!(rd.read_line().expect("line")??, first_line());
102102
assert_eq!(exhaust(&mut rd) + 1, 1561, "it stops after seeing the flush byte");
103103
rd.reset();
@@ -117,7 +117,7 @@ fn read_from_file_and_reader_advancement() -> crate::Result {
117117
Ok(())
118118
}
119119

120-
fn exhaust(rd: &mut git_packetline::Reader<&[u8]>) -> i32 {
120+
fn exhaust(rd: &mut git_packetline::Provider<&[u8]>) -> i32 {
121121
let mut count = 0;
122122
while let Some(_) = rd.read_line() {
123123
count += 1;

git-packetline/tests/packet_line/reader/read.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::io::{BufRead, Read};
66
#[test]
77
fn read_line_trait_method_reads_one_packet_line_at_a_time() -> crate::Result {
88
let buf = fixture_bytes("v1/01-clone.combined-output-no-binary");
9-
let mut rd = git_packetline::Reader::new(&buf[..], None);
9+
let mut rd = git_packetline::Provider::new(&buf[..], None);
1010

1111
let mut out = String::new();
1212
let mut r = rd.as_read();
@@ -45,7 +45,7 @@ fn read_line_trait_method_reads_one_packet_line_at_a_time() -> crate::Result {
4545
#[test]
4646
fn read_pack_with_progress_extraction() -> crate::Result {
4747
let buf = fixture_bytes("v1/01-clone.combined-output");
48-
let mut rd = git_packetline::Reader::new(&buf[..], None);
48+
let mut rd = git_packetline::Provider::new(&buf[..], None);
4949

5050
// Read without sideband decoding
5151
let mut out = Vec::new();

git-transport/src/client/git/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ pub(crate) mod recv;
77

88
pub struct Connection<R, W> {
99
line_writer: git_packetline::Writer<W>,
10-
line_reader: git_packetline::Reader<R>,
10+
line_reader: git_packetline::Provider<R>,
1111
path: BString,
1212
virtual_host: Option<(String, Option<u16>)>,
1313
version: Protocol,
@@ -78,7 +78,7 @@ where
7878
) -> Self {
7979
Connection {
8080
line_writer: git_packetline::Writer::new(write),
81-
line_reader: git_packetline::Reader::new(read, None),
81+
line_reader: git_packetline::Provider::new(read, None),
8282
path: repository_path.into(),
8383
virtual_host: virtual_host.map(|(h, p)| (h.into(), p)),
8484
version: desired_version,

git-transport/src/client/git/recv.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{client, client::Capabilities, Protocol};
22
use std::io;
33

44
pub fn capabilties_and_possibly_refs<'a, T: io::Read>(
5-
rd: &'a mut git_packetline::Reader<T>,
5+
rd: &'a mut git_packetline::Provider<T>,
66
version: Protocol,
77
) -> Result<(Capabilities, Option<Box<dyn io::BufRead + 'a>>), client::Error> {
88
rd.fail_on_err_lines(true);

git-transport/src/client/http/mod.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::{client, client::git, Protocol, Service};
2-
use git_features::pipe;
32
use std::{
43
borrow::Cow,
54
convert::Infallible,
@@ -21,7 +20,7 @@ pub struct Transport<H: Http> {
2120
version: crate::Protocol,
2221
http: H,
2322
service: Option<Service>,
24-
line_reader: git_packetline::Reader<H::ResponseBody>,
23+
line_reader: Option<git_packetline::Provider<H::ResponseBody>>,
2524
}
2625

2726
impl Transport<Impl> {
@@ -32,7 +31,7 @@ impl Transport<Impl> {
3231
version,
3332
service: None,
3433
http: Impl::new(),
35-
line_reader: git_packetline::Reader::new(pipe::unidirectional(0).1, None),
34+
line_reader: None,
3635
}
3736
}
3837
}
@@ -69,10 +68,12 @@ impl<H: Http> client::TransportSketch for Transport<H> {
6968
))));
7069
}
7170

72-
self.line_reader.replace(body);
71+
let line_reader = self
72+
.line_reader
73+
.get_or_insert_with(|| git_packetline::Provider::new(body, None));
7374

7475
let mut announced_service = String::new();
75-
self.line_reader.as_read().read_to_string(&mut announced_service)?;
76+
line_reader.as_read().read_to_string(&mut announced_service)?;
7677
let expected_service_announcement = format!("# service={}", service.as_str());
7778
if announced_service.trim() != expected_service_announcement {
7879
return Err(client::Error::Http(Error::Detail(format!(
@@ -82,7 +83,7 @@ impl<H: Http> client::TransportSketch for Transport<H> {
8283
))));
8384
}
8485

85-
let (capabilities, refs) = git::recv::capabilties_and_possibly_refs(&mut self.line_reader, self.version)?;
86+
let (capabilities, refs) = git::recv::capabilties_and_possibly_refs(line_reader, self.version)?;
8687
self.service = Some(service);
8788
Ok(client::SetServiceResponse {
8889
actual_protocol: self.version,

0 commit comments

Comments
 (0)