Skip to content

Commit f55c808

Browse files
committed
1.8.0-beta.1
1 parent 09ae217 commit f55c808

File tree

4 files changed

+122
-2
lines changed

4 files changed

+122
-2
lines changed

.github/workflows/rust.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ jobs:
4848
run: cargo check
4949

5050
- name: Test
51-
run: cargo test --features http,tls
51+
run: cargo test --features http,tls --release

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "nng-c"
3-
version = "1.8.0"
3+
version = "1.8.0-beta.1"
44
authors = ["Douman <[email protected]>"]
55
edition = "2018"
66
keywords = ["nng", "nanomsg"]

README.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,61 @@ Version corresponds to C library
1111
## Features
1212

1313
- `http` - Enables http transport
14+
- `tls` - Enables TLS transport
15+
- `websocket` - Enables websocket transport. Implies `http` feature.
1416
- `log` - Enables logging via [log](https://crates.io/crates/log) crate
17+
18+
## Usage
19+
20+
Basic example of client and server communication
21+
22+
```rust
23+
use nng_c::{options, Socket, Message, ErrorCode};
24+
25+
use core::time;
26+
27+
//Feel free to append zero char to avoid unnecessary allocations
28+
const ADDR: &str = "ipc://nng-c-example\0";
29+
const REQ_TIMEOUT: options::Req = options::Req {
30+
resend_time: Some(time::Duration::from_millis(50)),
31+
resend_tick: Some(time::Duration::from_millis(1)),
32+
};
33+
34+
fn server() -> Result<(), ErrorCode> {
35+
let server = Socket::rep0()?;
36+
server.listen(ADDR.into()).expect("listen");
37+
38+
loop {
39+
let msg = server.recv_msg()?;
40+
let body = msg.body();
41+
let msg = core::str::from_utf8(body).expect("utf-8 bytes");
42+
match msg {
43+
"quit" => break Ok(()),
44+
other => {
45+
println!("Received bytes(len={})={:?}", other.len(), other);
46+
}
47+
}
48+
}
49+
}
50+
51+
let server = std::thread::spawn(server);
52+
53+
//Wait for thread to spin
54+
std::thread::sleep(time::Duration::from_millis(10));
55+
56+
let client = Socket::req0().expect("Create client");
57+
client.set_opt(REQ_TIMEOUT).expect("Set options");
58+
59+
client.connect(ADDR.into()).expect("connect");
60+
61+
let mut msg = Message::new().expect("create message");
62+
msg.append("ping".as_bytes()).expect("Input bytes");
63+
client.send_msg(msg).expect("send message");
64+
65+
let mut msg = Message::new().expect("create message");
66+
msg.append("quit".as_bytes()).expect("Input bytes");
67+
client.send_msg(msg).expect("send quit");
68+
69+
server.join().expect("Finish server successfully");
70+
71+
```

src/lib.rs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,67 @@
11
//!High level bindings to the lib nng
2+
//!
3+
//!Version corresponds to C library
4+
//!
5+
//!## Features
6+
//!
7+
//!- `http` - Enables http transport
8+
//!- `tls` - Enables TLS transport
9+
//!- `websocket` - Enables websocket transport. Implies `http` feature.
10+
//!- `log` - Enables logging via [log](https://crates.io/crates/log) crate
11+
//!
12+
//!## Usage
13+
//!
14+
//!Basic example of client and server communication
15+
//!
16+
//!```rust
17+
//!use nng_c::{options, Socket, Message, ErrorCode};
18+
//!
19+
//!use core::time;
20+
//!
21+
//!//Feel free to append zero char to avoid unnecessary allocations
22+
//!const ADDR: &str = "ipc://nng-c-example\0";
23+
//!const REQ_TIMEOUT: options::Req = options::Req {
24+
//! resend_time: Some(time::Duration::from_millis(50)),
25+
//! resend_tick: Some(time::Duration::from_millis(1)),
26+
//!};
27+
//!
28+
//!fn server() -> Result<(), ErrorCode> {
29+
//! let server = Socket::rep0()?;
30+
//! server.listen(ADDR.into()).expect("listen");
31+
//!
32+
//! loop {
33+
//! let msg = server.recv_msg()?;
34+
//! let body = msg.body();
35+
//! let msg = core::str::from_utf8(body).expect("utf-8 bytes");
36+
//! match msg {
37+
//! "quit" => break Ok(()),
38+
//! other => {
39+
//! println!("Received bytes(len={})={:?}", other.len(), other);
40+
//! }
41+
//! }
42+
//! }
43+
//!}
44+
//!
45+
//!let server = std::thread::spawn(server);
46+
//!
47+
//!//Wait for thread to spin
48+
//!std::thread::sleep(time::Duration::from_millis(10));
49+
//!
50+
//!let client = Socket::req0().expect("Create client");
51+
//!client.set_opt(REQ_TIMEOUT).expect("Set options");
52+
//!
53+
//!client.connect(ADDR.into()).expect("connect");
54+
//!
55+
//!let mut msg = Message::new().expect("create message");
56+
//!msg.append("ping".as_bytes()).expect("Input bytes");
57+
//!client.send_msg(msg).expect("send message");
58+
//!
59+
//!let mut msg = Message::new().expect("create message");
60+
//!msg.append("quit".as_bytes()).expect("Input bytes");
61+
//!client.send_msg(msg).expect("send quit");
62+
//!
63+
//!server.join().expect("Finish server successfully");
64+
//!```
265
366
#![no_std]
467
#![warn(missing_docs)]

0 commit comments

Comments
 (0)