try to do a type thing

This commit is contained in:
Graham Christensen 2017-11-06 12:55:37 -05:00
parent f7377c1584
commit d559383737
No known key found for this signature in database
GPG key ID: ACA1C1D120C83D5C
2 changed files with 34 additions and 36 deletions

View file

@ -11,13 +11,19 @@ use std::io::Error;
use ofborg::checkout;
use ofborg::worker;
use ofborg::worker::{Actions,StdPr,StdRepo,BuildJob};
use ofborg::worker::{Actions,StdPr,StdRepo};
pub struct BuildJob {
pub repo: StdRepo,
pub pr: StdPr,
}
fn main() {
println!("Hello, world!");
if false {
let mut session = Session::open_url("amqps://grahamc:cCbKQmwnRcd8kvPW9cjmMSkp@events.nix.gsc.io//").unwrap();
let mut channel = session.open_channel(1).unwrap();
@ -47,7 +53,6 @@ fn main() {
println!("Failed to publish: {:?}", result);
process::exit(1);
}
}
}
struct BuildWorker {
@ -55,7 +60,7 @@ struct BuildWorker {
}
impl worker::SimpleWorker for BuildWorker {
fn consumer(&self, job: BuildJob, resp: Actions) -> Result<(), Error> {
fn consumer<BuildJob>(&self, job: BuildJob, resp: Actions) -> Result<(), Error> {
let project = self.cloner.project(job.repo.full_name, job.repo.clone_url);
let co = project.clone_for("builder".to_string(),
job.pr.number.to_string())?;

View file

@ -19,18 +19,11 @@ pub struct StdPr {
pub head_sha: String,
}
pub struct BuildJob {
pub repo: StdRepo,
pub pr: StdPr,
}
pub struct Actions {
}
pub trait SimpleWorker {
fn consumer(&self, job: BuildJob, resp: Actions) -> Result<(), Error>;
fn consumer<J>(&self, job: J, resp: Actions) -> Result<(), Error>;
}
pub fn new<T: SimpleWorker>(worker: T) -> Worker<T> {