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
//! A high-level wrapper library for talking to Ceph RADOS clusters.
//!
//! Only certain features are currently available, mainly writing and reading to
//! RADOS objects, as well as a limited set of other operations (object stats,
//! for example.) However, the operations that are provided are supplied in
//! an idiomatic, Rusty fashion, using the futures library for asynchronous
//! operations.
//!
//! Missing functionality includes MON/OSD/PGS commands.
//!
//! Current features:
//! - Read, write, full-write, append
//! - Automatic `rados_shutdown` on drop of the `RadosCluster` type
//! - Asynchronous read/write/etc. using futures
//! - Synchronous read and asynchronous write using the `RadosObject` wrapper,
//!   which provides `Read`, `Write`, and `Seek` operations in a manner similar
//!   to files
//!
//! Planned features:
//! - Fully asynchronous read/write using `tokio_io::{AsyncRead, AsyncWrite}`
//! - Implementations of more futures traits (`Stream`, `Sink`)

#![recursion_limit = "1024"]

extern crate ceph_rust;
extern crate chrono;
#[macro_use]
extern crate error_chain;
extern crate futures;
extern crate libc;


#[macro_export]
macro_rules! c {
    ($s:expr) => {
        CString::new($s)
            .expect(concat!("Could not convert `", $s, "` to an FFI-compatible CString!"))
    };
}


pub mod async;
pub mod errors;
pub mod rados;
pub mod stream;

pub use errors::*;
pub use rados::{RadosConnectionBuilder, RadosConnection, RadosContext, RadosStat};