RsBundle  Diff

Differences From Artifact [7e11f5b598]:

  • File src/solver/sync.rs — part of check-in [d5eed55bb2] at 2019-07-30 08:01:24 on branch restructure — Rearrange master problem module (user: fifr size: 29806) [more...]

To Artifact [2df5bc84ea]:

  • File src/solver/asyn.rs — part of check-in [8fb77f4bd8] at 2019-07-30 09:19:24 on branch async-separation — Copy `sync` to `asyn` module as a basis (user: fifr size: 30161)
  • File src/solver/sync.rs — part of check-in [de803d0a82] at 2019-07-30 09:17:56 on branch trunk — masterprocess: use own error type (user: fifr size: 30161)

23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
23
24
25
26
27
28
29

30
31
32
33
34
35
36
37







-
+







use num_traits::Float;
use std::sync::Arc;
use std::time::Instant;
use threadpool::ThreadPool;

use crate::{DVector, Real};

use super::masterprocess::{MasterConfig, MasterProcess, MasterResponse};
use super::masterprocess::{self, MasterConfig, MasterProcess, MasterResponse};
use crate::master::{self, MasterProblem};
use crate::problem::{EvalResult, FirstOrderProblem, Update, UpdateState};
use crate::terminator::{StandardTerminatable, StandardTerminator, Terminator};
use crate::weighter::{HKWeightable, HKWeighter, Weighter};

/// The default iteration limit.
pub const DEFAULT_ITERATION_LIMIT: usize = 10_000;
111
112
113
114
115
116
117













118
119
120
121
122
123
124
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137







+
+
+
+
+
+
+
+
+
+
+
+
+







            Master(err) => Some(err.as_ref()),
            Evaluation(err) => Some(err),
            Process(err) => Some(err.as_ref()),
            _ => None,
        }
    }
}

impl<E, MErr> From<masterprocess::Error<MErr>> for Error<E>
where
    MErr: std::error::Error + 'static,
{
    fn from(err: masterprocess::Error<MErr>) -> Error<E> {
        use masterprocess::Error::*;
        match err {
            Process(err) => Error::Master(err),
            Aggregation(err) => Error::Master(err.into()),
        }
    }
}

type ClientSender<P> =
    Sender<std::result::Result<EvalResult<usize, <P as FirstOrderProblem>::Primal>, <P as FirstOrderProblem>::Err>>;

type ClientReceiver<P> =
    Receiver<std::result::Result<EvalResult<usize, <P as FirstOrderProblem>::Primal>, <P as FirstOrderProblem>::Err>>;