Log the time incoming RPC messages were queued (#8909)
Release Notes: - N/A Co-authored-by: Conrad <conrad@zed.dev>
This commit is contained in:
parent
bca98caa07
commit
35c516fda9
4 changed files with 47 additions and 27 deletions
|
@ -8,6 +8,7 @@ use futures::{SinkExt as _, StreamExt as _};
|
|||
use prost::Message as _;
|
||||
use serde::Serialize;
|
||||
use std::any::{Any, TypeId};
|
||||
use std::time::Instant;
|
||||
use std::{
|
||||
cmp,
|
||||
fmt::Debug,
|
||||
|
@ -515,8 +516,9 @@ impl<S> MessageStream<S>
|
|||
where
|
||||
S: futures::Stream<Item = Result<WebSocketMessage, anyhow::Error>> + Unpin,
|
||||
{
|
||||
pub async fn read(&mut self) -> Result<Message, anyhow::Error> {
|
||||
pub async fn read(&mut self) -> Result<(Message, Instant), anyhow::Error> {
|
||||
while let Some(bytes) = self.stream.next().await {
|
||||
let received_at = Instant::now();
|
||||
match bytes? {
|
||||
WebSocketMessage::Binary(bytes) => {
|
||||
zstd::stream::copy_decode(bytes.as_slice(), &mut self.encoding_buffer).unwrap();
|
||||
|
@ -525,10 +527,10 @@ where
|
|||
|
||||
self.encoding_buffer.clear();
|
||||
self.encoding_buffer.shrink_to(MAX_BUFFER_LEN);
|
||||
return Ok(Message::Envelope(envelope));
|
||||
return Ok((Message::Envelope(envelope), received_at));
|
||||
}
|
||||
WebSocketMessage::Ping(_) => return Ok(Message::Ping),
|
||||
WebSocketMessage::Pong(_) => return Ok(Message::Pong),
|
||||
WebSocketMessage::Ping(_) => return Ok((Message::Ping, received_at)),
|
||||
WebSocketMessage::Pong(_) => return Ok((Message::Pong, received_at)),
|
||||
WebSocketMessage::Close(_) => break,
|
||||
_ => {}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue