Skip to content
This repository was archived by the owner on Apr 8, 2024. It is now read-only.

Commit 3d2e520

Browse files
committed
code cleanup
1 parent 52cc3f7 commit 3d2e520

11 files changed

+105
-90
lines changed

.editorconfig

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[*]
2+
end_of_line = lf
3+
insert_final_newline = true
4+
charset = utf-8
5+
indent_style = space
6+
indent_size = 4

grpc-examples/src/bin/greeter_client_async.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@ extern crate grpc_examples;
22
extern crate grpc;
33
extern crate futures;
44

5-
use grpc::futures_grpc::GrpcFuture;
6-
75
use grpc_examples::helloworld_grpc::*;
86
use grpc_examples::helloworld::*;
97

10-
use futures::BoxFuture;
11-
use futures::Future;
8+
use futures::Future as _Future;
129

1310
use std::env;
1411

grpc-examples/src/helloworld_grpc.rs

+12-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ impl GreeterClient {
4444

4545
impl Greeter for GreeterClient {
4646
fn SayHello(&self, p: super::helloworld::HelloRequest) -> ::grpc::result::GrpcResult<super::helloworld::HelloReply> {
47-
::grpc::futuresx::wait2(self.async_client.SayHello(p))
47+
::futures::Future::wait(self.async_client.SayHello(p))
4848
}
4949
}
5050

@@ -82,7 +82,7 @@ pub struct GreeterServer {
8282
}
8383

8484
impl GreeterServer {
85-
pub fn new<H : Greeter + 'static + Sync + Send>(h: H) -> GreeterServer {
85+
pub fn new<H : Greeter + 'static + Sync + Send>(h: H) -> Self {
8686
let handler_arc = ::std::sync::Arc::new(h);
8787
let service_definition = ::std::sync::Arc::new(::grpc::method::ServerServiceDefinition::new(
8888
vec![
@@ -110,3 +110,13 @@ impl GreeterServer {
110110
self.server.run()
111111
}
112112
}
113+
114+
pub struct GreeterAsyncServer {
115+
}
116+
117+
impl GreeterAsyncServer {
118+
pub fn new<H : GreeterAsync + 'static + Sync + Send>(h: H) -> Self {
119+
GreeterAsyncServer {
120+
}
121+
}
122+
}

src/client.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
use std::io;
21
use std::thread;
32
use std::net::SocketAddr;
43
use std::net::ToSocketAddrs;
54
use std::iter::repeat;
6-
use std::cell::RefCell;
7-
use std::sync::Mutex;
85

96
use futures::Future;
107
use futures::stream;
@@ -13,11 +10,7 @@ use futures::stream::channel;
1310
use futures::stream::Sender;
1411
use futures::stream::Receiver;
1512
use futures::oneshot;
16-
use futures::Oneshot;
1713
use futures::Complete;
18-
use futures::task::TaskData;
19-
use futures::done;
20-
use futures::empty;
2114

2215
use futures_io;
2316
use futures_io::write_all;
@@ -67,6 +60,7 @@ use futuresx::*;
6760

6861
use grpc::*;
6962
use http2_async::*;
63+
use solicit_misc::*;
7064
use io_misc::*;
7165
use misc::*;
7266

src/codegen.rs

+21-10
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,13 @@ impl<'a> MethodGen<'a> {
4949
}
5050

5151
fn write_sync_client(&self, w: &mut CodeWriter) {
52-
let input = self.root_scope.find_message(self.proto.get_input_type()).rust_fq_name();
53-
let output = self.root_scope.find_message(self.proto.get_output_type()).rust_fq_name();
54-
5552
w.def_fn(&self.sync_sig(), |w| {
56-
w.write_line(&format!("::grpc::futuresx::wait2(self.async_client.{}(p))", self.proto.get_name()));
53+
// https://github.com/alexcrichton/futures-rs/issues/97
54+
w.write_line(&format!("::futures::Future::wait(self.async_client.{}(p))", self.proto.get_name()));
5755
});
5856
}
5957

6058
fn write_async_client(&self, w: &mut CodeWriter) {
61-
let input = self.root_scope.find_message(self.proto.get_input_type()).rust_fq_name();
62-
let output = self.root_scope.find_message(self.proto.get_output_type()).rust_fq_name();
63-
6459
w.def_fn(&self.async_sig(), |w| {
6560
self.write_method_descriptor(w,
6661
&format!("let method: ::grpc::method::MethodDescriptor<{}, {}> = ", self.input(), self.output()),
@@ -210,15 +205,15 @@ impl<'a> ServiceGen<'a> {
210205
});
211206
}
212207

213-
fn write_server(&self, w: &mut CodeWriter) {
208+
fn write_sync_server(&self, w: &mut CodeWriter) {
214209
w.pub_struct(&self.sync_server_name(), |w| {
215210
w.field_decl("server", "::grpc::server::GrpcServer");
216211
});
217212

218213
w.write_line("");
219214

220215
w.impl_self_block(&self.sync_server_name(), |w| {
221-
w.pub_fn(format!("new<H : {} + 'static + Sync + Send>(h: H) -> {}", self.sync_intf_name(), self.sync_server_name()), |w| {
216+
w.pub_fn(format!("new<H : {} + 'static + Sync + Send>(h: H) -> Self", self.sync_intf_name()), |w| {
222217
w.write_line("let handler_arc = ::std::sync::Arc::new(h);");
223218
w.block("let service_definition = ::std::sync::Arc::new(::grpc::method::ServerServiceDefinition::new(", "));", |w| {
224219
w.block("vec![", "],", |w| {
@@ -247,6 +242,20 @@ impl<'a> ServiceGen<'a> {
247242
});
248243
}
249244

245+
fn write_async_server(&self, w: &mut CodeWriter) {
246+
w.pub_struct(&self.async_server_name(), |w| {
247+
});
248+
249+
w.write_line("");
250+
251+
w.impl_self_block(&self.async_server_name(), |w| {
252+
w.pub_fn(format!("new<H : {} + 'static + Sync + Send>(h: H) -> Self", self.async_intf_name()), |w| {
253+
w.expr_block(self.async_server_name(), |w| {
254+
});
255+
});
256+
});
257+
}
258+
250259
fn write(&self, w: &mut CodeWriter) {
251260
w.comment("interface");
252261
w.write_line("");
@@ -264,7 +273,9 @@ impl<'a> ServiceGen<'a> {
264273
w.write_line("");
265274
w.comment("sync server");
266275
w.write_line("");
267-
self.write_server(w);
276+
self.write_sync_server(w);
277+
w.write_line("");
278+
self.write_async_server(w);
268279
}
269280
}
270281

src/futuresx.rs

-9
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,3 @@ impl<A> TaskDataMutex<A> {
5050
}
5151

5252
}
53-
54-
55-
// Work around.
56-
// For some reason I don't understand BoxFuture::wait
57-
// produces strange compile-time error:
58-
// the trait bound `futures::Future<..> + Send + 'static: std::marker::Sized` is not satisfied
59-
pub fn wait2<F : ::futures::Future>(f: F) -> Result<F::Item, F::Error> {
60-
f.wait()
61-
}

src/grpc_protobuf.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use std::marker;
2-
31
use marshall::Marshaller;
42

53
use protobuf::Message;
@@ -18,7 +16,7 @@ impl<M : Message + MessageStatic> Marshaller<M> for MarshallerProtobuf {
1816
let mut is = CodedInputStream::from_bytes(buf);
1917
let mut r: M = M::new();
2018
r.merge_from(&mut is).unwrap();
21-
r.check_initialized();
19+
r.check_initialized().unwrap(); // TODO
2220
r
2321
}
2422
}

src/http2_async.rs

-47
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
use std::io;
22
use std::io::Read;
33
use std::io::Write;
4-
use std::mem;
54

65
use futures::Future;
76
use futures::BoxFuture;
8-
use futures::failed;
97

108
use futures::stream::Stream;
119
use futures::stream::BoxStream;
@@ -14,19 +12,13 @@ use futures_io::read_exact;
1412
use futures_io::write_all;
1513
use futures_mio::TcpStream;
1614

17-
use solicit::http::HttpResult;
1815
use solicit::http::HttpError;
1916
use solicit::http::frame::RawFrame;
2017
use solicit::http::frame::FrameIR;
2118
use solicit::http::frame::unpack_header;
2219
use solicit::http::frame::settings::SettingsFrame;
2320
use solicit::http::frame::settings::HttpSetting;
2421
use solicit::http::connection::HttpFrame;
25-
use solicit::http::connection::ReceiveFrame;
26-
use solicit::http::connection::SendFrame;
27-
use solicit::http::transport::TransportStream;
28-
29-
use io_misc::*;
3022

3123

3224
pub type HttpFuture<T> = BoxFuture<T, HttpError>;
@@ -118,42 +110,3 @@ pub fn initial(conn: TcpStream) -> HttpFuture<TcpStream> {
118110
done.boxed()
119111
}
120112

121-
122-
pub struct OnceReceiveFrame {
123-
raw_frame: RawFrame<'static>,
124-
used: bool,
125-
}
126-
127-
impl OnceReceiveFrame {
128-
pub fn new(raw_frame: RawFrame<'static>) -> OnceReceiveFrame {
129-
OnceReceiveFrame {
130-
raw_frame: raw_frame,
131-
used: false,
132-
}
133-
}
134-
}
135-
136-
impl ReceiveFrame for OnceReceiveFrame {
137-
fn recv_frame(&mut self) -> HttpResult<HttpFrame> {
138-
assert!(!self.used);
139-
self.used = true;
140-
let r = HttpFrame::from_raw(&self.raw_frame);
141-
if let Some(f) = r.as_ref().ok() {
142-
}
143-
r
144-
}
145-
}
146-
147-
pub struct VecSendFrame(pub Vec<u8>);
148-
149-
impl SendFrame for VecSendFrame {
150-
fn send_frame<F : FrameIR>(&mut self, frame: F) -> HttpResult<()> {
151-
let pos = self.0.len();
152-
let mut cursor = io::Cursor::new(mem::replace(&mut self.0, Vec::new()));
153-
cursor.set_position(pos as u64);
154-
try!(frame.serialize_into(&mut cursor));
155-
self.0 = cursor.into_inner();
156-
157-
Ok(())
158-
}
159-
}

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ mod http2_async;
1919
mod io_misc;
2020
pub mod futuresx;
2121
mod misc;
22+
mod solicit_misc;

src/server.rs

+1-8
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,9 @@ use solicit::http::transport::TransportReceiveFrame;
3737
use grpc;
3838
use method::ServerServiceDefinition;
3939

40+
use solicit_misc::*;
4041
use misc::*;
4142

42-
struct HeaderDebug<'a>(&'a Header<'a, 'a>);
43-
44-
impl<'a> fmt::Debug for HeaderDebug<'a> {
45-
fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
46-
write!(fmt, "Header {{ name: {:?}, value: {:?} }}",
47-
BsDebug(self.0.name()), BsDebug(self.0.value()))
48-
}
49-
}
5043

5144
struct GrpcStream {
5245
stream_id: Option<StreamId>,

src/solicit_misc.rs

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
use std::fmt;
2+
use std::io;
3+
use std::mem;
4+
5+
use solicit::http::Header;
6+
use solicit::http::HttpResult;
7+
use solicit::http::frame::RawFrame;
8+
use solicit::http::frame::FrameIR;
9+
use solicit::http::connection::ReceiveFrame;
10+
use solicit::http::connection::HttpFrame;
11+
use solicit::http::connection::SendFrame;
12+
13+
use misc::*;
14+
15+
16+
pub struct HeaderDebug<'a>(pub &'a Header<'a, 'a>);
17+
18+
impl<'a> fmt::Debug for HeaderDebug<'a> {
19+
fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
20+
write!(fmt, "Header {{ name: {:?}, value: {:?} }}",
21+
BsDebug(self.0.name()), BsDebug(self.0.value()))
22+
}
23+
}
24+
25+
26+
27+
pub struct OnceReceiveFrame {
28+
raw_frame: RawFrame<'static>,
29+
used: bool,
30+
}
31+
32+
impl OnceReceiveFrame {
33+
pub fn new(raw_frame: RawFrame<'static>) -> OnceReceiveFrame {
34+
OnceReceiveFrame {
35+
raw_frame: raw_frame,
36+
used: false,
37+
}
38+
}
39+
}
40+
41+
impl ReceiveFrame for OnceReceiveFrame {
42+
fn recv_frame(&mut self) -> HttpResult<HttpFrame> {
43+
assert!(!self.used);
44+
self.used = true;
45+
HttpFrame::from_raw(&self.raw_frame)
46+
}
47+
}
48+
49+
pub struct VecSendFrame(pub Vec<u8>);
50+
51+
impl SendFrame for VecSendFrame {
52+
fn send_frame<F : FrameIR>(&mut self, frame: F) -> HttpResult<()> {
53+
let pos = self.0.len();
54+
let mut cursor = io::Cursor::new(mem::replace(&mut self.0, Vec::new()));
55+
cursor.set_position(pos as u64);
56+
try!(frame.serialize_into(&mut cursor));
57+
self.0 = cursor.into_inner();
58+
59+
Ok(())
60+
}
61+
}

0 commit comments

Comments
 (0)