Skip to content

Instantly share code, notes, and snippets.

@OneOfOne
Created March 29, 2016 01:13
Show Gist options
  • Select an option

  • Save OneOfOne/ac141c675b7942186769 to your computer and use it in GitHub Desktop.

Select an option

Save OneOfOne/ac141c675b7942186769 to your computer and use it in GitHub Desktop.
mangos bug dropping messages
package main
import (
"log"
"strconv"
"time"
"github.com/go-mangos/mangos"
"github.com/go-mangos/mangos/protocol/pub"
"github.com/go-mangos/mangos/protocol/sub"
"github.com/go-mangos/mangos/transport/ipc"
"github.com/go-mangos/mangos/transport/tcp"
)
func server(url string) {
var sock mangos.Socket
var err error
if sock, err = pub.NewSocket(); err != nil {
log.Fatalf("can't get new pub socket: %s", err)
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Listen(url); err != nil {
log.Fatalf("can't listen on pub socket: %s", err.Error())
}
for i := uint64(0); ; i++ {
if err = sock.Send([]byte(strconv.FormatUint(i, 10))); err != nil {
log.Fatalf("Failed publishing: %s", err.Error())
}
}
}
func client(url string) {
var sock mangos.Socket
var err error
var msg []byte
if sock, err = sub.NewSocket(); err != nil {
log.Fatalf("can't get new sub socket: %s", err.Error())
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Dial(url); err != nil {
log.Fatalf("can't dial on sub socket: %s", err.Error())
}
err = sock.SetOption(mangos.OptionSubscribe, []byte(""))
if err != nil {
log.Fatalf("cannot subscribe: %s", err.Error())
}
for i := uint64(0); ; i++ {
if msg, err = sock.Recv(); err != nil {
log.Fatalf("Cannot recv: %s", err.Error())
}
v, _ := strconv.ParseUint(string(msg), 10, 64)
if v != i {
//log.Printf("missed %d, got %d", i, v)
}
if i%1e6 == 0 {
log.Println(i, v)
}
}
}
func main() {
log.SetFlags(log.Lshortfile)
const addr = "tcp://127.0.0.1:40899"
go server(addr)
time.Sleep(time.Second * 2)
client(addr)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment