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
//! # Message enumeration that can be sent by either side

use crate::types::*;
use serde::{Deserialize, Serialize};

/// Message sent by the server.
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(tag = "message")]
pub enum ServerMessage {
    /// Challenge request for authentication.
    ChallengeRequest(Challenge),
    /// New job response.
    JobResponse(Job),
    /// Currently pending jobs.
    JobList(JobList),
}

/// Messages which can be sent by the client.
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(tag = "message")]
pub enum ClientMessage {
    /// Initialize connection
    Hello(ClientHello),
    /// Respond to challenge
    ChallengeResponse(Challenge),
    /// Request job
    JobRequest(JobRequest),
}