From ffdaf14dd90995273fd697b9b87018d5dba84379 Mon Sep 17 00:00:00 2001 From: Jeff Olson Date: Thu, 26 Apr 2012 14:30:22 -0700 Subject: [PATCH] initial stab at API for std::net::tcp --- src/libstd/net_tcp.rs | 59 +++++++++++++++++++++++++++++++++++++++++++ src/libstd/std.rc | 1 + 2 files changed, 60 insertions(+) create mode 100644 src/libstd/net_tcp.rs diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs new file mode 100644 index 00000000000..91ba225b770 --- /dev/null +++ b/src/libstd/net_tcp.rs @@ -0,0 +1,59 @@ +#[doc=" +High-level interface to libuv's TCP functionality +"]; + +#[cfg(ignore)] +mod test { + #[test] + fn test_gl_tcp_ipv4_request() { + let ip = "127.0.0.1"; + let port = 80u; + let expected_read_msg = "foo"; + let actual_write_msg = "bar"; + let addr = ipv4::address(ip, port); + + let data_po = comm::port::<[u8]>(); + let data_ch = comm::chan(data_po); + + alt connect(addr) { + tcp_connected(tcp_stream) { + let write_data = str::as_buf(actual_write_msg); + alt write(tcp_stream, [write_data]) { + tcp_write_success { + let mut total_read_data: [u8] = [] + let reader_po = read_start(tcp_stream); + loop { + alt comm::recv(reader_po) { + new_read_data(data) { + total_read_data += data; + // theoretically, we could keep iterating, here, if + // we expect the server on the other end to keep + // streaming/chunking data to us, but.. + read_stop(tcp_stream); + break; + } + done_reading { + break; + } + error { + fail "erroring occured during read attempt.. FIXME need info"; + } + } + } + comm::send(data_ch, total_read_data); + } + tcp_write_error { + fail "error during write attempt.. FIXME need err info"; + } + } + } + tcp_connect_error { + fail "error during connection attempt.. FIXME need err info.."; + } + } + + let actual_data = comm::recv(data_po); + let resp = str::from_bytes(actual_data); + log(debug, "DATA RECEIVED: "+resp); + } +} \ No newline at end of file diff --git a/src/libstd/std.rc b/src/libstd/std.rc index 40a03ae25c2..99011c5d649 100644 --- a/src/libstd/std.rc +++ b/src/libstd/std.rc @@ -23,6 +23,7 @@ export test, tempfile, serialization; // General io and system-services modules mod net; +mod net_tcp; // libuv modules mod uv;