client/
main.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use log::{error, info, trace};
use networking::{connect_to_server, process_fragment_task, receive_fragment_task, send_request};
use shared::{types::error::FractalError, utils::fragment_request_impl::FragmentRequestOperation};

mod fractal_generation;
mod image;
mod networking;

use cli::parser::{CliClientArgs, Parser};
use shared::types::messages::FragmentRequest;

fn main() -> Result<(), FractalError> {
    let cli_args: CliClientArgs = CliClientArgs::parse();
    shared::logger::init_logger(cli_args.verbose, cli_args.debug, cli_args.trace)?;

    let serialized_request =
        FragmentRequest::new(cli_args.worker_name.clone(), 1000).serialize()?;

    let mut stream = connect_to_server(&cli_args)?;
    send_request(&mut stream, &serialized_request)?;
    log::trace!("Sent request to server");

    loop {
        match receive_fragment_task(&mut stream) {
            Ok(Some((fragment_task, data))) => {
                trace!("Received fragment task: {:?}", fragment_task);
                stream = process_fragment_task(fragment_task, data, &cli_args)?;
            }
            Ok(None) => {
                info!("No more tasks to process");
                break;
            }
            Err(e) => {
                error!("Error receiving fragment task: {:?}", e);
                break;
            }
        }
    }

    Ok(())
}