Radish alpha
r
rad:zwTxygwuz5LDGBq255RA2CbNGrz8
Radicle CI broker
Radicle
Git
refactor: QueueAdder holds an ergo::Radicle
Lars Wirzenius committed 2 months ago
commit 1620a6a14761ed49013d0ccead34b993997ebba0
parent 0e2bc0d
2 files changed +11 -20
modified src/queueadd.rs
@@ -1,10 +1,8 @@
-
use radicle::Profile;
-

use crate::{
    ci_event::CiEvent,
    ci_event_source::{CiEventSource, CiEventSourceError},
    db::{Db, DbError, QueueId},
-
    logger,
+
    ergo, logger,
    notif::NotificationSender,
    worker::Worker,
};
@@ -20,6 +18,7 @@ impl QueueAdderBuilder {
        Ok(QueueAdder {
            db: self.db.ok_or(AdderError::Missing("db"))?,
            events_tx: self.events_tx.ok_or(AdderError::Missing("events_tx"))?,
+
            radicle: ergo::Radicle::new().map_err(AdderError::Ergo)?,
        })
    }

@@ -37,13 +36,12 @@ impl QueueAdderBuilder {
pub struct QueueAdder {
    db: Db,
    events_tx: NotificationSender,
+
    radicle: ergo::Radicle,
}

impl QueueAdder {
    fn add_events(&self) -> Result<(), AdderError> {
-
        let profile = Profile::load().map_err(AdderError::profile)?;
-

-
        let mut source = CiEventSource::new(&profile)?;
+
        let mut source = CiEventSource::new(self.radicle.profile())?;

        // This loop ends when there's an error, e.g., failure to read an
        // event from the node.
@@ -76,7 +74,7 @@ impl QueueAdder {
}

impl Worker for QueueAdder {
-
    const NAME: &str = "queue-adder";
+
    const NAME: &'static str = "queue-adder";
    type Error = AdderError;

    fn work(&mut self) -> Result<(), Self::Error> {
@@ -89,8 +87,8 @@ pub enum AdderError {
    #[error("programming error: QueueAdderBuilder field {0} was not set")]
    Missing(&'static str),

-
    #[error(transparent)]
-
    Profile(#[from] Box<radicle::profile::Error>),
+
    #[error("failed to load ergonomic Radicle wrapper")]
+
    Ergo(#[source] ergo::ErgoError),

    #[error(transparent)]
    CiEvent(#[from] CiEventSourceError),
@@ -101,9 +99,3 @@ pub enum AdderError {
    #[error("failed to notify other thread about database change")]
    Send,
}
-

-
impl AdderError {
-
    fn profile(err: radicle::profile::Error) -> Self {
-
        Self::Profile(Box::new(err))
-
    }
-
}
modified src/worker.rs
@@ -10,18 +10,17 @@ use crate::logger;

/// Start a new thread. Caller must catch the thread handle and
/// join it to wait for thread to end.
-
pub fn start_thread<W: Worker>(mut o: W) -> JoinHandle<Result<(), W::Error>> {
-
    let name = W::NAME;
+
pub fn start_thread<W: Worker + 'static>(mut o: W) -> JoinHandle<Result<(), W::Error>> {
    spawn(move || {
-
        logger::worker_start(name);
+
        logger::worker_start(W::NAME);
        let result = o.work();
-
        logger::worker_end(name, &result);
+
        logger::worker_end(W::NAME, &result);
        result
    })
}

/// A worker thread.
-
pub trait Worker: Send + 'static {
+
pub trait Worker: Send {
    /// Name of thread, or kind of thread. Used for logging only.
    const NAME: &'static str;