mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-20 02:47:34 +03:00
Implement Server::add_request_handler in terms of ::add_message_handler
This commit is contained in:
parent
1aff42302c
commit
68917c78be
@ -121,36 +121,27 @@ impl Server {
|
|||||||
Fut: 'static + Send + Future<Output = tide::Result<M::Response>>,
|
Fut: 'static + Send + Future<Output = tide::Result<M::Response>>,
|
||||||
M: RequestMessage,
|
M: RequestMessage,
|
||||||
{
|
{
|
||||||
let prev_handler = self.handlers.insert(
|
self.add_message_handler(move |server, envelope| {
|
||||||
TypeId::of::<M>(),
|
let receipt = envelope.receipt();
|
||||||
Box::new(move |server, envelope| {
|
let response = (handler)(server.clone(), envelope);
|
||||||
let envelope = envelope.into_any().downcast::<TypedEnvelope<M>>().unwrap();
|
async move {
|
||||||
let receipt = envelope.receipt();
|
match response.await {
|
||||||
let response = (handler)(server.clone(), *envelope);
|
Ok(response) => {
|
||||||
async move {
|
server.peer.respond(receipt, response)?;
|
||||||
match response.await {
|
Ok(())
|
||||||
Ok(response) => {
|
}
|
||||||
server.peer.respond(receipt, response)?;
|
Err(error) => {
|
||||||
Ok(())
|
server.peer.respond_with_error(
|
||||||
}
|
receipt,
|
||||||
Err(error) => {
|
proto::Error {
|
||||||
server.peer.respond_with_error(
|
message: error.to_string(),
|
||||||
receipt,
|
},
|
||||||
proto::Error {
|
)?;
|
||||||
message: error.to_string(),
|
Err(error)
|
||||||
},
|
|
||||||
)?;
|
|
||||||
Err(error)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.boxed()
|
}
|
||||||
}),
|
})
|
||||||
);
|
|
||||||
if prev_handler.is_some() {
|
|
||||||
panic!("registered a handler for the same message twice");
|
|
||||||
}
|
|
||||||
self
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_connection(
|
pub fn handle_connection(
|
||||||
|
Loading…
Reference in New Issue
Block a user