Giter Site home page Giter Site logo

mylxsw / mangos Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nanomsg/mangos-v1

0.0 2.0 0.0 2.11 MB

package mangos is an implementation in pure Go of the SP ("Scalable Protocols") protocols.

License: Apache License 2.0

Go 99.12% Roff 0.80% Makefile 0.08%

mangos's Introduction

mangos

Linux Status Windows Status Apache License Gitter GoDoc Go Report Card

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 -u github.com/go-mangos/mangos

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

$GOPATH/src/pkg/github.com/go-mangos/mangos

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

Documentation

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

$ godoc github.com/go-mangos/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/go-mangos/mangos/test

There are also internal benchmarks available:

$ go test -bench=. github.com/go-mangos/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

mangos's People

Contributors

gdamore avatar tylertreat avatar xuoe avatar dzyp avatar ekorenevsky avatar omani avatar kenegozi avatar laszlo-kiss avatar heavyhorst avatar rzezeski avatar sbinet avatar yoink00 avatar term1nal avatar gitter-badger avatar wenfang avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.