https://github.com/blabaere/scaproust
Implementation of the nanomsg "Scalability Protocols" in rust.
https://github.com/blabaere/scaproust
messaging messaging-library nanomsg network networking
Last synced: about 1 year ago
JSON representation
Implementation of the nanomsg "Scalability Protocols" in rust.
- Host: GitHub
- URL: https://github.com/blabaere/scaproust
- Owner: blabaere
- License: apache-2.0
- Created: 2015-05-30T19:39:17.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2020-02-14T09:03:18.000Z (over 6 years ago)
- Last Synced: 2025-03-30T09:09:41.900Z (about 1 year ago)
- Topics: messaging, messaging-library, nanomsg, network, networking
- Language: Rust
- Homepage:
- Size: 2.1 MB
- Stars: 194
- Watchers: 11
- Forks: 9
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Scaproust - Scalability Protocols in Rust
[](https://travis-ci.org/blabaere/scaproust)
[](https://ci.appveyor.com/project/blabaere/scaproust)
[](https://coveralls.io/github/blabaere/scaproust?branch=master)
[](https://crates.io/crates/scaproust)
Scaproust is an implementation of the [nanomsg](http://nanomsg.org/index.html) "Scalability Protocols" in the [Rust programming language](http://www.rust-lang.org/).
Quoting from nanomsg's site:
> nanomsg is a socket library that provides several common communication patterns. It aims to make the networking layer fast, scalable, and easy to use. Implemented in C, it works on a wide range of operating systems with no further dependencies.
> The communication patterns, also called "scalability protocols", are basic blocks for building distributed systems. By combining them you can create a vast array of distributed applications.
**Experimental work !** For working stuff, please see [nanomsg-rs](https://github.com/blabaere/nanomsg.rs).
[API Documentation](https://blabaere.github.io/scaproust/scaproust/index.html)
## Goals
* Support for all of nanomsg's protocols.
* Support for TCP and IPC transports.
* Idiomatic rust API first, mimic the original C API second.
* Extensibility: allow user code to define additional protocols and transports
## Usage
First, add this to your `Cargo.toml`:
```toml
[dependencies]
scaproust = "0.3.1"
```
Next, add this to your crate:
```rust
extern crate scaproust;
```
## Progress
- [ ] Protocols
- [x] PAIR
- [x] BUS
- [ ] REQREP
- [x] REQ
- [x] REQ resend
- [ ] REQ prefetch replies
- [x] REP
- [x] PUBSUB
- [x] PUB
- [x] SUB
- [x] SUB subscription filter
- [x] PIPELINE
- [x] PUSH
- [x] PULL
- [x] SURVEY
- [x] SURVEYOR
- [x] SURVEYOR deadline
- [x] RESPONDENT
- [x] Transports
- [x] TCP
- [x] IPC (*nix)
- [x] IPC (Windows)
- [ ] Socket options
- [ ] Linger
- [x] Recv max size
- [x] Send timeout
- [x] Recv timeout
- [x] Reconnect interval
- [ ] Reconnect interval max
- [x] Send priority
- [x] Recv priority
- [ ] IPV4 only
- [ ] Socket name
- [x] Protocol options
- [x] REQ resend interval
- [x] SURVEYOR deadline
- [x] SUB subscribe
- [x] SUB unsubscribe
- [x] Transport options
- [x] TCP no delay
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you shall be dual licensed as above, without any
additional terms or conditions.