From 62e1398a0299aab91d95e7734f0c5a80ab7d0ad2 Mon Sep 17 00:00:00 2001 From: "Y. T. Chung" Date: Wed, 29 Oct 2014 19:52:08 +0800 Subject: [PATCH] use rustuv and libgreen for asynchronous --- Cargo.toml | 6 ++++++ src/bin/local.rs | 12 ++++++++++++ src/bin/server.rs | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 704d612d..6c80f3af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,3 +40,9 @@ path = "src/bin/local.rs" name = "ssserver" path = "src/bin/server.rs" + +[dependencies.green] +git = "https://github.com/alexcrichton/green-rs.git" + +[dependencies.rustuv] +git = "https://github.com/alexcrichton/green-rs.git" diff --git a/src/bin/local.rs b/src/bin/local.rs index a513586c..030fd189 100644 --- a/src/bin/local.rs +++ b/src/bin/local.rs @@ -33,6 +33,9 @@ extern crate shadowsocks; #[phase(plugin, link)] extern crate log; +extern crate green; +extern crate rustuv; + use getopts::{optopt, optflag, getopts, usage}; use std::os; @@ -42,6 +45,15 @@ use shadowsocks::config::DEFAULT_DNS_CACHE_CAPACITY; use shadowsocks::relay::{RelayLocal, Relay}; use shadowsocks::crypto::cipher::CIPHER_AES_256_CFB; +fn event_loop() -> Box { + box rustuv::EventLoop::new().unwrap() as Box +} + +#[start] +fn start(argc: int, argv: *const *const u8) -> int { + green::start(argc, argv, event_loop, main) +} + fn main() { let opts = [ optflag("v", "version", "print version"), diff --git a/src/bin/server.rs b/src/bin/server.rs index 790ec367..6758b31c 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -35,6 +35,9 @@ extern crate shadowsocks; #[phase(plugin, link)] extern crate log; +extern crate green; +extern crate rustuv; + use getopts::{optopt, optflag, getopts, usage}; use std::os; @@ -43,6 +46,15 @@ use shadowsocks::config::DEFAULT_DNS_CACHE_CAPACITY; use shadowsocks::relay::{RelayServer, Relay}; use shadowsocks::crypto::cipher::CIPHER_AES_256_CFB; +fn event_loop() -> Box { + box rustuv::EventLoop::new().unwrap() as Box +} + +#[start] +fn start(argc: int, argv: *const *const u8) -> int { + green::start(argc, argv, event_loop, main) +} + fn main() { let opts = [ optflag("v", "version", "print version"),