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
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 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;







|







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::{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
            Master(err) => Some(err.as_ref()),
            Evaluation(err) => Some(err),
            Process(err) => Some(err.as_ref()),
            _ => None,
        }
    }
}














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>>;








>
>
>
>
>
>
>
>
>
>
>
>
>







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>>;