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
// Copyright 2019 Baidu, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.

//! [Apache BRPC](https://github.com/apache/incubator-brpc) is an
//! industrial-grade RPC framework for building reliable and high-performance
//! services. `brpc-rs` enables BRPC clients and servers implemented in the Rust
//! programming language.
//!
//! ## Status
//! This project is currently a prototype under active development. Many APIs
//! are missing; the provided APIs are not guaranteed to be stable until 1.0.
//!
//! ## Prerequisites
//! These dependencies are required for `brpc-rs` and `brpc-build` to work properly.
//!
//! * Apache BRPC: shared library and headers
//! * libprotobuf-dev
//! * libprotoc-dev
//! * protobuf-compiler
//! * libssl-dev
//! * libgflags-dev
//! * libleveldb-dev
//!
//! ## Quickstart
//! Please refer to the latest
//! [README.md](https://github.com/mesalock-linux/brpc-rs/blob/master/README.md).

mod channel;
mod controller;
mod server;

mod error;
pub use error::BrpcError;

#[doc(hidden)]
pub type BrpcResult<T> = Result<T, BrpcError>;

// for user code
pub use channel::{Channel, ChannelOptions};
pub use controller::Controller;
pub use server::{Server, ServerOptions, Service, ServiceOwnership};

// for protoc-generated code
#[doc(hidden)]
pub use brpc_sys as internal;