Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
package mangos is an implementation in pure Go of the SP ("Scalable Protocols") protocols.
Go Shell Other
Failed to load latest commit information.
compat fixes #86 Reconnect interval too long, needs backoff handling
examples fixes #62 Add websocket support
macat fixes #108 macat exits after receiving first message
perf fixes #99 Desire perf testing tools compatible to nanomsg/perf
protocol fixes #94 STAR raw mode is broken -- does not receive
test fixes #129 Want anonymous TCP port binding
transport fixes #131 transports don't need read/write locks
.gitignore Added AUTHORS (identifying "The Mangos Authors", and changed copyrigh…
.travis.yml fixes #82 add gitter hook for travis
AUTHORS Add Tyler Treat to AUTHORS
LICENSE fixes #65 Need a LICENSE file added to repo.
README.md fixes #121 Add Appveyor status image.
conn.go fixes #131 transports don't need read/write locks
core.go fixes #129 Want anonymous TCP port binding
device.go fixes #62 Add websocket support
dialer.go fixes #66 Desire more fine grained access to Dialer and Listener
doc.go fixes #51 Update docs to remove warnings, etc.
errors.go fixes #110 we should enforce protocol states
listener.go fixes #66 Desire more fine grained access to Dialer and Listener
mangos.jpg fixes #121 Add Appveyor status image.
message.go fixes #75 Decorate rx messages with Port
options.go fixes #125 OptionLocalAddress is no longer used
pipe.go fixes #131 transports don't need read/write locks
port.go fixes #74 Provide peer information in Port properties
properties.go fixes #74 Provide peer information in Port properties
protocol.go fixes #94 STAR raw mode is broken -- does not receive
socket.go fixes #110 we should enforce protocol states
transport.go fixes #129 Want anonymous TCP port binding
util.go fixes #25 Connecting to multiple surveyor sockets
waiter.go fixes #110 we should enforce protocol states

README.md

mangos

Linux Build Status Windows Build Status GoDoc Gitter

package mangos is an implementation in pure Go of the SP ("Scalable Protocols") protocols. This makes heavy use of go channels, internally, but it can operate on systems that lack support for cgo. It has no external dependencies.

The reference implementation of the SP protocols is available as nanomsg

The design is intended to make it easy to add new transports with almost trivial effort, as well as new topologies ("protocols" in SP terminology.)

At present, all of the Req/Rep, Pub/Sub, Pair, Bus, Push/Pull, and Surveyor/Respondent patterns are supported.

Additionally, there is an experimental new pattern called STAR available. This pattern is like Bus, except that the messages are delivered not just to immediate peers, but to all members of the topology. Developers must be careful not to create cycles in their network when using this pattern, otherwise infinite loops can occur.

Supported transports include TCP, inproc, IPC, Websocket, Websocket/TLS and TLS. Use addresses of the form "tls+tcp://:" to access TLS. Note that ipc:// is not supported on Windows (by either this or the reference implementation.) Forcing the local TCP port in Dial is not supported yet (this is rarely useful).

Basic interoperability with nanomsg has been verified (you can do so yourself with nanocat and macat) for all protocols nanomsg supports. Additionally there are a number of projects that use the two products together.

If you find this useful, I would appreciate knowing about it. I can be reached via my email address, garrett -at- damore -dot- org

Installing

Using go get

$ go get github.com/gdamore/mangos

After this command mangos is ready to use. Its source will be in:

$GOPATH/src/pkg/github.com/gdamore/mangos

You can use go get -u -a to update all installed packages.

Documentation

For docs, see http://godoc.org/github.com/gdamore/mangos or run:

$ godoc github.com/gdamore/mangos

Testing

This package supports internal self tests, which can be run in the idiomatic Go way, although it uses a separate test sub-package:

$ go test github.com/gdamore/mangos/test

There are also internal benchmarks available:

$ go test -bench=. github.com/gdamore/mangos/test

Examples

Some examples are posted in the directories under examples/ The examples are rewrites (in Go) of Tim Dysinger's libnanomsg examples, which are located at

http://tim.dysinger.net/posts/2013-09-16-getting-started-with-nanomsg.html

godoc in the example directories will yield information about how to run each example program.

Enjoy!

Copyright 2015 The Mangos Authors

Something went wrong with that request. Please try again.