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:
committed by
Adrian Catangiu
parent
e89ed14707
commit
fbb4d5392a
@@ -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"
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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]
|
||||
|
||||
15
src/lib.rs
15
src/lib.rs
@@ -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};
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user