1
0
mirror of https://github.com/fafhrd91/actix-net synced 2025-08-28 15:07:48 +02:00

expose ServerMessage service

This commit is contained in:
Nikolay Kim
2018-09-26 20:40:45 -07:00
parent 13c66a2ac4
commit ba57e67a74
5 changed files with 217 additions and 114 deletions

View File

@@ -233,29 +233,18 @@ where
fn poll_service(&mut self) -> bool {
match self.service.poll_ready() {
Ok(Async::Ready(_)) => {
let mut item = self.request.take();
if let Some(item) = self.request.take() {
let sender = self.write_tx.clone();
actix::Arbiter::spawn(
self.service
.call(item)
.then(|item| sender.send(item).map(|_| ()).map_err(|_| ())),
);
}
loop {
if let Some(item) = item {
match self.service.poll_ready() {
Ok(Async::Ready(_)) => {
let sender = self.write_tx.clone();
actix::Arbiter::spawn(self.service.call(item).then(|item| {
sender.send(item).map(|_| ()).map_err(|_| ())
}));
}
Ok(Async::NotReady) => {
self.request = Some(item);
return false;
}
Err(err) => {
self.state =
TransportState::Error(FramedTransportError::Service(err));
return true;
}
}
}
match self.framed.poll() {
Ok(Async::Ready(Some(el))) => item = Some(el),
let item = match self.framed.poll() {
Ok(Async::Ready(Some(el))) => el,
Err(err) => {
self.state =
TransportState::Error(FramedTransportError::Decoder(err));
@@ -266,6 +255,26 @@ where
self.state = TransportState::Stopping;
return true;
}
};
match self.service.poll_ready() {
Ok(Async::Ready(_)) => {
let sender = self.write_tx.clone();
actix::Arbiter::spawn(
self.service
.call(item)
.then(|item| sender.send(item).map(|_| ()).map_err(|_| ())),
);
}
Ok(Async::NotReady) => {
self.request = Some(item);
return false;
}
Err(err) => {
self.state =
TransportState::Error(FramedTransportError::Service(err));
return true;
}
}
}
}