style(http): Rustfmt State.update

This commit is contained in:
leonardo.yvens
2016-07-27 10:36:38 -03:00
parent 9f249bbee8
commit 211b408b92

View File

@@ -669,172 +669,195 @@ impl<H: MessageHandler<T>, T: Transport> fmt::Debug for State<H, T> {
} }
impl<H: MessageHandler<T>, T: Transport> State<H, T> { impl<H: MessageHandler<T>, T: Transport> State<H, T> {
fn update<F, K>(&mut self, next: Next, factory: &F) where F: MessageHandlerFactory<K, T>, K: Key { fn update<F, K>(&mut self, next: Next, factory: &F)
let timeout = next.timeout; where F: MessageHandlerFactory<K, T>,
let state = mem::replace(self, State::Closed); K: Key
match (state, next.interest) { {
(_, Next_::Remove) | (State::Closed, _) => return, // Keep State::Closed. let timeout = next.timeout;
(State::Init { .. }, e) => let state = mem::replace(self, State::Closed);
{ mem::replace(self, State::Init { interest: e, timeout: timeout} ); }, match (state, next.interest) {
(State::Http1(mut http1), next_) => { (_, Next_::Remove) |
match next_ { (State::Closed, _) => return, // Keep State::Closed.
Next_::Remove => unreachable!(), // Covered in (_, Next_::Remove) case above. (State::Init { .. }, e) => {
Next_::End => { mem::replace(self,
let reading = match http1.reading { State::Init {
Reading::Body(ref decoder) | interest: e,
Reading::Wait(ref decoder) if decoder.is_eof() => { timeout: timeout,
if http1.keep_alive { });
Reading::KeepAlive }
} else { (State::Http1(mut http1), next_) => {
Reading::Closed match next_ {
Next_::Remove => unreachable!(), // Covered in (_, Next_::Remove) case above.
Next_::End => {
let reading = match http1.reading {
Reading::Body(ref decoder) |
Reading::Wait(ref decoder) if decoder.is_eof() => {
if http1.keep_alive {
Reading::KeepAlive
} else {
Reading::Closed
}
} }
}, Reading::KeepAlive => http1.reading,
Reading::KeepAlive => http1.reading, _ => Reading::Closed,
_ => Reading::Closed, };
}; let mut writing = Writing::Closed;
let mut writing = Writing::Closed; let encoder = match http1.writing {
let encoder = match http1.writing { Writing::Wait(enc) |
Writing::Wait(enc) | Writing::Ready(enc) => Some(enc), Writing::Ready(enc) => Some(enc),
Writing::Chunk(mut chunk) => { Writing::Chunk(mut chunk) => {
if chunk.is_written() { if chunk.is_written() {
Some(chunk.next.0) Some(chunk.next.0)
} else { } else {
chunk.next.1 = next; chunk.next.1 = next;
writing = Writing::Chunk(chunk); writing = Writing::Chunk(chunk);
None None
}
} }
}, _ => return, // Keep State::Closed.
_ => return // Keep State::Closed. };
}; if let Some(encoder) = encoder {
if let Some(encoder) = encoder { if encoder.is_eof() {
if encoder.is_eof() { if http1.keep_alive {
if http1.keep_alive { writing = Writing::KeepAlive } writing = Writing::KeepAlive
} else if let Some(buf) = encoder.finish() { }
writing = Writing::Chunk(Chunk { } else if let Some(buf) = encoder.finish() {
buf: buf.bytes, writing = Writing::Chunk(Chunk {
pos: buf.pos, buf: buf.bytes,
next: (h1::Encoder::length(0), Next::end()) pos: buf.pos,
}) next: (h1::Encoder::length(0), Next::end()),
} })
}; }
};
match (reading, writing) { match (reading, writing) {
(Reading::KeepAlive, Writing::KeepAlive) => { (Reading::KeepAlive, Writing::KeepAlive) => {
let next = factory.keep_alive_interest(); let next = factory.keep_alive_interest();
mem::replace(self, State::Init { mem::replace(self,
interest: next.interest, State::Init {
timeout: next.timeout, interest: next.interest,
}); timeout: next.timeout,
return; });
}, return;
(reading, Writing::Chunk(chunk)) => { }
http1.reading = reading; (reading, Writing::Chunk(chunk)) => {
http1.writing = Writing::Chunk(chunk); http1.reading = reading;
http1.writing = Writing::Chunk(chunk);
}
_ => return, // Keep State::Closed.
} }
_ => return // Keep State::Closed.
} }
}, Next_::Read => {
Next_::Read => { http1.reading = match http1.reading {
http1.reading = match http1.reading { Reading::Init => Reading::Parse,
Reading::Init => Reading::Parse, Reading::Wait(decoder) => Reading::Body(decoder),
Reading::Wait(decoder) => Reading::Body(decoder), same => same,
same => same };
};
http1.writing = match http1.writing { http1.writing = match http1.writing {
Writing::Ready(encoder) => { Writing::Ready(encoder) => {
if encoder.is_eof() { if encoder.is_eof() {
if http1.keep_alive { if http1.keep_alive {
Writing::KeepAlive Writing::KeepAlive
} else { } else {
Writing::Closed Writing::Closed
} }
} else if encoder.is_closed() { } else if encoder.is_closed() {
if let Some(buf) = encoder.finish() { if let Some(buf) = encoder.finish() {
Writing::Chunk(Chunk { Writing::Chunk(Chunk {
buf: buf.bytes, buf: buf.bytes,
pos: buf.pos, pos: buf.pos,
next: (h1::Encoder::length(0), Next::wait()) next: (h1::Encoder::length(0), Next::wait()),
}) })
} else { } else {
Writing::Closed Writing::Closed
} }
} else { } else {
Writing::Wait(encoder) Writing::Wait(encoder)
}
}
Writing::Chunk(chunk) => {
if chunk.is_written() {
Writing::Wait(chunk.next.0)
} else {
Writing::Chunk(chunk)
}
}
same => same,
};
} }
}, Next_::Write => {
Writing::Chunk(chunk) => if chunk.is_written() { http1.writing = match http1.writing {
Writing::Wait(chunk.next.0) Writing::Wait(encoder) => Writing::Ready(encoder),
} else { Writing::Init => Writing::Head,
Writing::Chunk(chunk) Writing::Chunk(chunk) => {
}, if chunk.is_written() {
same => same Writing::Ready(chunk.next.0)
}; } else {
}, Writing::Chunk(chunk)
Next_::Write => { }
http1.writing = match http1.writing { }
Writing::Wait(encoder) => Writing::Ready(encoder), same => same,
Writing::Init => Writing::Head, };
Writing::Chunk(chunk) => if chunk.is_written() {
Writing::Ready(chunk.next.0)
} else {
Writing::Chunk(chunk)
},
same => same
};
http1.reading = match http1.reading { http1.reading = match http1.reading {
Reading::Body(decoder) => if decoder.is_eof() { Reading::Body(decoder) => {
if http1.keep_alive { if decoder.is_eof() {
Reading::KeepAlive if http1.keep_alive {
} else { Reading::KeepAlive
Reading::Closed } else {
Reading::Closed
}
} else {
Reading::Wait(decoder)
}
}
same => same,
};
} }
} else { Next_::ReadWrite => {
Reading::Wait(decoder) http1.reading = match http1.reading {
}, Reading::Init => Reading::Parse,
same => same Reading::Wait(decoder) => Reading::Body(decoder),
}; same => same,
}, };
Next_::ReadWrite => { http1.writing = match http1.writing {
http1.reading = match http1.reading { Writing::Wait(encoder) => Writing::Ready(encoder),
Reading::Init => Reading::Parse, Writing::Init => Writing::Head,
Reading::Wait(decoder) => Reading::Body(decoder), Writing::Chunk(chunk) => {
same => same if chunk.is_written() {
}; Writing::Ready(chunk.next.0)
http1.writing = match http1.writing { } else {
Writing::Wait(encoder) => Writing::Ready(encoder), Writing::Chunk(chunk)
Writing::Init => Writing::Head, }
Writing::Chunk(chunk) => if chunk.is_written() { }
Writing::Ready(chunk.next.0) same => same,
} else { };
Writing::Chunk(chunk) }
}, Next_::Wait => {
same => same http1.reading = match http1.reading {
}; Reading::Body(decoder) => Reading::Wait(decoder),
}, same => same,
Next_::Wait => { };
http1.reading = match http1.reading {
Reading::Body(decoder) => Reading::Wait(decoder),
same => same
};
http1.writing = match http1.writing { http1.writing = match http1.writing {
Writing::Ready(encoder) => Writing::Wait(encoder), Writing::Ready(encoder) => Writing::Wait(encoder),
Writing::Chunk(chunk) => if chunk.is_written() { Writing::Chunk(chunk) => {
Writing::Wait(chunk.next.0) if chunk.is_written() {
} else { Writing::Wait(chunk.next.0)
Writing::Chunk(chunk) } else {
}, Writing::Chunk(chunk)
same => same }
}; }
} same => same,
};
}
}
http1.timeout = timeout;
mem::replace(self, State::Http1(http1));
}
};
} }
http1.timeout = timeout;
mem::replace(self, State::Http1(http1));
}
};
}
} }
// These Reading and Writing stuff should probably get moved into h1/message.rs // These Reading and Writing stuff should probably get moved into h1/message.rs