#nanomsg #binding

sys nanomsg-sys

nanomsg 库使用的底层绑定

15 个版本

使用旧的 Rust 2015

0.7.2 2018 年 9 月 14 日
0.6.2 2017 年 4 月 19 日
0.6.1 2016 年 12 月 27 日
0.6.0 2016 年 6 月 10 日
0.1.2 2015 年 3 月 25 日

#8#nanomsg

Download history 66/week @ 2024-03-16 127/week @ 2024-03-23 86/week @ 2024-03-30 44/week @ 2024-04-06 54/week @ 2024-04-13 58/week @ 2024-04-20 54/week @ 2024-04-27 67/week @ 2024-05-04 71/week @ 2024-05-11 60/week @ 2024-05-18 33/week @ 2024-05-25 49/week @ 2024-06-01 29/week @ 2024-06-08 55/week @ 2024-06-15 49/week @ 2024-06-22 6/week @ 2024-06-29

148 次每月下载
2 个crate中使用(通过 nanomsg

MIT 许可证

32KB
580

Nanomsg

Cargo 0.7.2 MIT License Build Status Build status

文档

Nanomsg 是一个现代消息库,是 ZeroMQ 的继承者,由 Martin Sustrik 和同事用 C 语言编写。nanomsg 库采用 MIT/X11 许可证。 "nanomsg" 是 250bpm s.r.o. 的商标。

需求

  • Nanomsg 1.1.4

安装 nanomsg

make deps

安装

[dependencies]
nanomsg = "0.7.2"

只需导入crate即可使用

use nanomsg;

创建套接字

Nanomsg 的基础是 Socket。每个套接字可以属于某种类型。套接字类型定义了它的行为和限制(例如,只能发送而不能接收)。

use nanomsg::{Socket, Protocol, Error};

/// Creating a new `Pull` socket type. Pull sockets can only receive messages
/// from a `Push` socket type.
fn create_socket() -> Result<(), Error> {
    let mut socket = Socket::new(Protocol::Pull)?;
    Ok(())
}

现在,每个创建的套接字可以绑定到 多个 端点。每个绑定都可能返回一个错误,因此我们将利用 ?(尝试)运算符。

use nanomsg::{Socket, Protocol, Error};

/// Creating a new `Pull` socket type. Pull sockets can only receive messages
/// from a `Push` socket type.
fn create_socket() -> Result<(), Error> {
    let mut socket = Socket::new(Protocol::Pull)?;
    
    // Create a new endpoint bound to the following protocol string. This returns
    // a new `Endpoint` that lives at-most the lifetime of the original socket.
    let mut endpoint = socket.bind("ipc:///tmp/pipeline.ipc")?;

    Ok(())
}

套接字现在可以使用了!

因为这是一个 Pull 套接字,我们将实现读取收到的任何消息。

// ... After the endpoint we created, we'll start reading some data.
let mut msg = String::new();
loop {
    socket.read_to_string(&mut msg)?;
    println!("We got a message: {}", &*msg);
    msg.clear();
}
// ...

太棒了!但是……我们没有数据包发送到套接字,因此我们将读取不到任何内容。为了解决这个问题,让我们实现配套的 Push 套接字。

use nanomsg::{Socket, Protocol, Error};

fn pusher() -> Result<(), Error> {
    let mut socket = Socket::new(Protocol::Push)?;
    let mut endpoint = socket.connect("ipc:///tmp/pipeline.ipc")?;

    socket.write(b"message in a bottle");

    endpoint.shutdown();
    Ok(())
}

贡献者

(按任意顺序)

许可证

MIT许可证(MIT)

在此特此授予任何人免费获得本软件及其相关文档文件(以下简称“软件”)副本的权利,不受任何限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供副本的个人从事上述活动,但须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他行为中产生的,是否与软件、使用或以其他方式使用软件有关。

依赖项

~0.4–280KB