Refine code for rust edition 2018

Refine code to support rust edition 2018, no functional changes.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
This commit is contained in:
Liu Jiang
2020-03-23 21:19:25 +08:00
committed by Adrian Catangiu
parent e89ed14707
commit fbb4d5392a
7 changed files with 37 additions and 39 deletions

View File

@@ -3,6 +3,7 @@ name = "micro_http"
version = "0.1.0"
license = "Apache-2.0"
authors = ["Amazon Firecracker team <firecracker-devel@amazon.com>"]
edition = "2018"
[dependencies]
epoll = ">=4.0.1"

View File

@@ -3,7 +3,7 @@
use std::result::Result;
use RequestError;
use super::RequestError;
/// Wrapper over an HTTP Header type.
#[derive(Debug, Eq, Hash, PartialEq)]
@@ -58,7 +58,7 @@ impl Header {
/// invalidate our request as we don't support the full set of HTTP/1.1 specification.
/// Such header entries are "Transfer-Encoding: identity; q=0", which means a compression
/// algorithm is applied to the body of the request, or "Expect: 103-checkpoint".
#[derive(Debug)]
#[derive(Debug, PartialEq)]
pub struct Headers {
/// The `Content-Length` header field tells us how many bytes we need to receive
/// from the source after the headers.

View File

@@ -4,17 +4,18 @@
use std::collections::VecDeque;
use std::io::{Read, Write};
use common::ascii::{CR, CRLF_LEN, LF};
use common::Body;
pub use common::{ConnectionError, RequestError};
use headers::Headers;
use request::{find, Request, RequestLine};
use response::{Response, StatusCode};
use crate::common::ascii::{CR, CRLF_LEN, LF};
use crate::common::headers::Headers;
use crate::common::{Body, RequestError};
use crate::request::{find, Request, RequestLine};
use crate::response::{Response, StatusCode};
pub use crate::common::ConnectionError;
const BUFFER_SIZE: usize = 1024;
/// Describes the state machine of an HTTP connection.
pub enum ConnectionState {
pub(crate) enum ConnectionState {
WaitingForRequestLine,
WaitingForHeaders,
WaitingForBody,
@@ -389,7 +390,7 @@ impl<T: Read + Write> HttpConnection<T> {
#[cfg(test)]
mod tests {
use super::*;
use common::{Method, Version};
use crate::common::{Method, Version};
use std::os::unix::net::UnixStream;
#[test]

View File

@@ -114,13 +114,10 @@ mod connection;
mod request;
mod response;
mod server;
use common::ascii;
use common::headers;
pub use connection::{ConnectionError, HttpConnection};
pub use request::{Request, RequestError};
pub use response::{Response, StatusCode};
pub use server::{HttpServer, ServerError, ServerRequest, ServerResponse};
pub use common::headers::{Headers, MediaType};
pub use common::{Body, Method, Version};
pub use self::common::headers::{Headers, MediaType};
pub use self::common::{Body, Method, Version};
pub use self::connection::{ConnectionError, HttpConnection};
pub use self::request::{Request, RequestError};
pub use self::response::{Response, StatusCode};
pub use self::server::{HttpServer, ServerError, ServerRequest, ServerResponse};

View File

@@ -3,16 +3,17 @@
use std::str::from_utf8;
use common::ascii::{CR, CRLF_LEN, LF, SP};
pub use common::RequestError;
use common::{Body, Method, Version};
use headers::Headers;
use crate::common::ascii::{CR, CRLF_LEN, LF, SP};
use crate::common::headers::Headers;
use crate::common::{Body, Method, Version};
pub use crate::common::RequestError;
/// Finds the first occurence of `sequence` in the `bytes` slice.
///
/// Returns the starting position of the `sequence` in `bytes` or `None` if the
/// `sequence` is not found.
pub fn find(bytes: &[u8], sequence: &[u8]) -> Option<usize> {
pub(crate) fn find(bytes: &[u8], sequence: &[u8]) -> Option<usize> {
bytes
.windows(sequence.len())
.position(|window| window == sequence)
@@ -135,7 +136,6 @@ impl RequestLine {
}
/// Wrapper over an HTTP Request.
#[allow(unused)]
#[derive(Debug)]
pub struct Request {
/// The request line of the request.

View File

@@ -3,15 +3,14 @@
use std::io::{Error as WriteError, Write};
use ascii::{COLON, CR, LF, SP};
use common::{Body, Version};
use headers::{Header, MediaType};
use crate::common::ascii::{COLON, CR, LF, SP};
use crate::common::headers::{Header, MediaType};
use crate::common::{Body, Version};
/// Wrapper over a response status code.
///
/// The status code is defined as specified in the
/// [RFC](https://tools.ietf.org/html/rfc7231#section-6).
#[allow(dead_code)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum StatusCode {
/// 100, Continue
@@ -124,7 +123,6 @@ impl ResponseHeaders {
}
/// Sets the content type to be written in the HTTP response.
#[allow(unused)]
pub fn set_content_type(&mut self, content_type: MediaType) {
self.content_type = content_type;
}

View File

@@ -2,18 +2,20 @@
// SPDX-License-Identifier: Apache-2.0
extern crate epoll;
use std::collections::HashMap;
use std::io::{Read, Write};
use std::os::unix::io::AsRawFd;
use std::os::unix::io::RawFd;
use std::os::unix::net::{UnixListener, UnixStream};
use std::path::Path;
use common::{Body, Version};
pub use common::{ConnectionError, RequestError, ServerError};
use connection::HttpConnection;
use request::Request;
use response::{Response, StatusCode};
use std::collections::HashMap;
use crate::common::ConnectionError;
use crate::common::{Body, Version};
use crate::connection::HttpConnection;
use crate::request::Request;
use crate::response::{Response, StatusCode};
pub use crate::common::ServerError;
static SERVER_FULL_ERROR_MESSAGE: &[u8] = b"HTTP/1.1 503\r\n\
Server: Firecracker API\r\n\
@@ -522,11 +524,10 @@ impl HttpServer {
mod tests {
use super::*;
use std::fs;
use std::io::{Read, Write};
use std::os::unix::net::UnixStream;
use common::Body;
use std::io::Read;
use std::io::Write;
use crate::common::Body;
#[test]
fn test_wait_one_connection() {