TCP connection creation overhead fixed by cloning once created TCP connection. Huge performance gain on login and register. Utilizing gRPC

This commit is contained in:
filipriec
2025-04-19 15:54:58 +02:00
parent 8b3aa5891e
commit 60ba17cfea
4 changed files with 21 additions and 29 deletions

View File

@@ -65,6 +65,7 @@ pub async fn back_to_login(
pub fn initiate_registration(
register_state: &RegisterState,
app_state: &mut AppState,
mut auth_client: AuthClient,
sender: mpsc::Sender<RegisterResult>,
) -> String {
// Clone necessary data
@@ -87,25 +88,18 @@ pub fn initiate_registration(
// 3. Spawn the registration task
spawn(async move {
let register_outcome = match AuthClient::new().await {
Ok(mut auth_client) => {
// Handle optional fields correctly for the gRPC call
let password_opt = if password.is_empty() { None } else { Some(password) };
let password_conf_opt = if password_confirmation.is_empty() { None } else { Some(password_confirmation) };
let role_opt = if role.is_empty() { None } else { Some(role) };
match auth_client.register(username.clone(), email, password_opt, password_conf_opt, role_opt).await
.with_context(|| format!("Spawned register task failed for username: {}", username))
{
Ok(response) => RegisterResult::Success(response),
Err(e) => RegisterResult::Failure(format!("{}", e)),
}
}
Err(e) => RegisterResult::ConnectionError(format!("Failed to create AuthClient: {}", e)),
let password_opt = if password.is_empty() { None } else { Some(password) };
let password_conf_opt = if password_confirmation.is_empty() { None } else { Some(password_confirmation) };
let role_opt = if role.is_empty() { None } else { Some(role) };
let register_outcome = match auth_client.register(username.clone(), email, password_opt, password_conf_opt, role_opt).await
.with_context(|| format!("Spawned register task failed for username: {}", username))
{
Ok(response) => RegisterResult::Success(response),
Err(e) => RegisterResult::Failure(format!("{}", e)),
};
// Send result back to the main UI thread
if let Err(e) = sender.send(register_outcome).await {
error!("Failed to send registration result: {}", e);
error!("Failed to send registration result: {}", e);
}
});