1use crate::external_snark_worker::{ExternalSnarkWorker, ExternalSnarkWorkerState};
2
3use super::{RpcSnarkWorker, RpcSnarkWorkerStatus};
4
5impl From<ExternalSnarkWorker> for RpcSnarkWorker {
6 fn from(source: ExternalSnarkWorker) -> Self {
7 Self {
8 time: Some(source.timestamp),
9 id: Some("single".into()),
10 status: source.state.into(),
11 }
12 }
13}
14
15impl From<ExternalSnarkWorkerState> for RpcSnarkWorkerStatus {
16 fn from(source: ExternalSnarkWorkerState) -> Self {
17 match source {
18 ExternalSnarkWorkerState::None => RpcSnarkWorkerStatus::None,
19 ExternalSnarkWorkerState::Starting => RpcSnarkWorkerStatus::Starting,
20 ExternalSnarkWorkerState::Idle => RpcSnarkWorkerStatus::Idle,
21 ExternalSnarkWorkerState::Working(job_id, summary) => {
22 RpcSnarkWorkerStatus::Working { job_id, summary }
23 }
24 ExternalSnarkWorkerState::WorkReady(job_id, _) => {
25 RpcSnarkWorkerStatus::WorkReady { job_id }
26 }
27 ExternalSnarkWorkerState::WorkError(job_id, error) => {
28 RpcSnarkWorkerStatus::WorkError { job_id, error }
29 }
30 ExternalSnarkWorkerState::Cancelling(job_id) => {
31 RpcSnarkWorkerStatus::Cancelling { job_id }
32 }
33 ExternalSnarkWorkerState::Cancelled(job_id) => {
34 RpcSnarkWorkerStatus::Cancelled { job_id }
35 }
36 ExternalSnarkWorkerState::Killing => RpcSnarkWorkerStatus::Killing,
37 ExternalSnarkWorkerState::Error(error, permanent) => {
38 RpcSnarkWorkerStatus::Error { error, permanent }
39 }
40 }
41 }
42}