noreplydev / suiro

Suiro is a reverse connection service written in rust for HTTP protocol based services.
11 stars 3 forks source link

gracias por la charla! #1

Closed horacimacias closed 10 months ago

horacimacias commented 10 months ago

Hola Cristian, gracias por la charla ayer, fue interesante. Queria compartirte algunos cambios de los que hablamos ayer; creo que te puede ayudar a pensar mas en rust y veras como ciertas cosas, cuando se hacen "the rust way" terminan siendo mucho mas claras y simples. Puedes ver los cambios en el fork de tu repositorio aqui: https://github.com/horacimacias/suiro-rs Algunos cambios quizas son "opinionated" asi que quizas no aplican o quizas no he entendido lo que suiro hace. Algunas recomendaciones finales:

no me enrollo mas; felicidades por la charla y animo en tus "aventuras con rust" que espero sean de provecho.

Horaci

noreplydev commented 10 months ago

Buenas Horaci,

Muchas gracias a ti por dedicarle tiempo a contribuir al proyecto. Perfecto, me leo los commits y lo mergeo si me cuadra todo, sino le hago un par de modificaciones y lo mergeo.

Muchas gracias nuevamente y espero verte en la siguiente charla.

💿 noreplydev

voliva commented 10 months ago

Hola @noreplydev, asistí también en la charla. Me estoy iniciando también en Rust, pero 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!