Skip to content

Verificar requestid recibido por el canal mpsc #2

@noreplydev

Description

@noreplydev

Originally posted by @voliva in #1 (comment)

Vi una parte del código que no termino de entender o creo que puede estar fallando algo.

    loop {
        // Check if response is ready
        if let Some((agent_response_id, agent_response_body)) = responses_rx.recv().await {
            if request_id == agent_response_id {
                http_raw_response = agent_response_body;
                break;
            }
        }

       // ...
    }

Es la parte del if requestid == agent_response_id para comprobar si el mensaje que llega es la respuesta del mensaje que esta función ha enviado al lado del socket.

Creo que cuando lees de un canal, el mensaje se consume y por lo tanto se pierde para otros que crees que pueden estar leyéndolo. Si resulta que el mensaje no es el tuyo y lo descartas, este mensaje se va a perder.

Lo que luego hablándolo con otra gente del meetup me dijeron que es imposible que un canal tenga varios consumidores, porque es un canal mpsc = Multiple Producer Single Consumer, con lo que el compilador no va a dejar nunca que pueda estar compartido con varios, con lo que creo que es posible que esta parte se pueda simplificar un poco. Pero me pierdo un poco intentando ver donde se crea este canal y como se utiliza. Creo que en la charla lo describiste bastante bien por esto.

Gracias!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions