1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![warn(missing_docs)] //! A small library to dispatch job files to relevant handlers. //! //! This library implements the core logic of a `Director` which dispatches jobs described in JSON //! files to a relevant `Handler` and then archives the job based on whether it was accepted or //! rejected. //! //! # Job files //! //! Job files are files ending in a `.json` extension in JSON format. Two keys are required: //! //! - `kind`: this string value is used to determine which handler will be used to handle the //! job. //! - `data`: this value is passed to the handler. //! //! Other keys may be used (e.g., a `timestamp` to indicate when the job was created). //! //! Job files are treated as read-only by the director. #[macro_use] extern crate log; #[macro_use] extern crate serde_json; mod crates { // public pub extern crate serde_json; // private pub extern crate chrono; pub extern crate inotify; pub extern crate itertools; pub extern crate lzma; pub extern crate rand; pub extern crate serde; pub extern crate tar; pub extern crate tempdir; pub extern crate thiserror; #[cfg(all(test, unix))] pub extern crate libc; #[cfg(test)] pub extern crate log; } mod director; mod handler; mod handlers; pub mod utils; mod watcher; pub use director::Director; pub use director::DirectorError; pub use director::Outbox; pub use director::RunResult; pub use handler::Handler; pub use handler::HandlerResult; pub use handlers::DirectorWatchdog; #[cfg(test)] mod test;