mirror of https://github.com/async-rs/async-std
Compare commits
5 Commits
34fc271ce6
...
ec51a85b8e
Author | SHA1 | Date |
---|---|---|
Dermot Haughey | ec51a85b8e | |
Marc-Antoine Perennou | 8947d8e03c | |
Marc-Antoine Perennou | bbde18ffbd | |
Marc-Antoine Perennou | 1adaa09626 | |
Dermot Haughey | 53e91588a1 |
|
@ -132,8 +132,8 @@ jobs:
|
|||
target:
|
||||
- i686-unknown-linux-gnu
|
||||
- powerpc-unknown-linux-gnu
|
||||
# - powerpc64-unknown-linux-gnu
|
||||
- mips-unknown-linux-gnu
|
||||
- powerpc64-unknown-linux-gnu
|
||||
# - mips-unknown-linux-gnu
|
||||
- arm-linux-androideabi
|
||||
|
||||
steps:
|
||||
|
|
10
Cargo.toml
10
Cargo.toml
|
@ -62,7 +62,7 @@ io_safety = []
|
|||
|
||||
[dependencies]
|
||||
async-attributes = { version = "1.1.2", optional = true }
|
||||
async-lock = { version = "2.7.0", optional = true }
|
||||
async-lock = { version = "3.1.0", optional = true }
|
||||
crossbeam-utils = { version = "0.8.0", optional = true }
|
||||
futures-core = { version = "0.3.4", optional = true, default-features = false }
|
||||
futures-io = { version = "0.3.4", optional = true }
|
||||
|
@ -80,10 +80,10 @@ surf = { version = "2.0.0", optional = true }
|
|||
|
||||
|
||||
[target.'cfg(not(target_os = "unknown"))'.dependencies]
|
||||
async-global-executor = { version = "2.3.1", optional = true, features = ["async-io"] }
|
||||
async-io = { version = "1.13.0", optional = true }
|
||||
futures-lite = { version = "1.0.0", optional = true }
|
||||
async-process = { version = "1.7.0", optional = true }
|
||||
async-global-executor = { version = "2.4.0", optional = true, features = ["async-io"] }
|
||||
async-io = { version = "2.2.0", optional = true }
|
||||
futures-lite = { version = "2.0.0", optional = true }
|
||||
async-process = { version = "2.0.0", optional = true }
|
||||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
gloo-timers = { version = "0.2.1", features = ["futures"], optional = true }
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
//! HTTP Hello World server
|
||||
//!
|
||||
//! To make an HTTP request do:
|
||||
//!
|
||||
//! ```sh
|
||||
//! curl http://localhost:8080/foo
|
||||
//! ```
|
||||
|
||||
use async_std::io;
|
||||
use async_std::net::{TcpListener, TcpStream};
|
||||
use async_std::prelude::*;
|
||||
use async_std::task;
|
||||
|
||||
async fn process(stream: &mut TcpStream) -> io::Result<()> {
|
||||
let msg = "HTTP/1.1 200 OK
|
||||
Content-Length: 11
|
||||
Content-Type: text/plain
|
||||
|
||||
hello world";
|
||||
let mut buffer = [0; 512];
|
||||
stream.read(&mut buffer).await?;
|
||||
stream.write_all(msg.as_bytes()).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() -> io::Result<()> {
|
||||
task::block_on(async {
|
||||
let listener = TcpListener::bind("127.0.0.1:8080").await?;
|
||||
println!("Listening on {}", listener.local_addr()?);
|
||||
|
||||
let mut incoming = listener.incoming();
|
||||
|
||||
while let Some(stream) = incoming.next().await {
|
||||
let mut stream = stream?;
|
||||
task::spawn(async move {
|
||||
process(&mut stream).await.unwrap();
|
||||
});
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
}
|
|
@ -11,10 +11,17 @@ pub mod hash_set;
|
|||
pub mod linked_list;
|
||||
pub mod vec_deque;
|
||||
|
||||
#[allow(unused)]
|
||||
pub use binary_heap::BinaryHeap;
|
||||
#[allow(unused)]
|
||||
pub use btree_map::BTreeMap;
|
||||
#[allow(unused)]
|
||||
pub use btree_set::BTreeSet;
|
||||
#[allow(unused)]
|
||||
pub use hash_map::HashMap;
|
||||
#[allow(unused)]
|
||||
pub use hash_set::HashSet;
|
||||
#[allow(unused)]
|
||||
pub use linked_list::LinkedList;
|
||||
#[allow(unused)]
|
||||
pub use vec_deque::VecDeque;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
mod from_stream;
|
||||
|
||||
#[allow(unused)]
|
||||
#[doc(inline)]
|
||||
pub use std::option::Option;
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
mod from_stream;
|
||||
|
||||
#[allow(unused)]
|
||||
#[doc(inline)]
|
||||
pub use std::result::Result;
|
||||
|
||||
|
|
|
@ -5,5 +5,6 @@
|
|||
mod extend;
|
||||
mod from_stream;
|
||||
|
||||
#[allow(unused)]
|
||||
#[doc(inline)]
|
||||
pub use std::string::String;
|
||||
|
|
|
@ -149,7 +149,7 @@ impl WakerSet {
|
|||
/// Returns `true` if at least one operation was notified.
|
||||
#[cold]
|
||||
fn notify(&self, n: Notify) -> bool {
|
||||
let mut inner = &mut *self.lock();
|
||||
let inner = &mut *self.lock();
|
||||
let mut notified = false;
|
||||
|
||||
for (_, opt_waker) in inner.entries.iter_mut() {
|
||||
|
|
|
@ -6,5 +6,6 @@
|
|||
mod extend;
|
||||
mod from_stream;
|
||||
|
||||
#[allow(unused)]
|
||||
#[doc(inline)]
|
||||
pub use std::vec::Vec;
|
||||
|
|
Loading…
Reference in New Issue