remove cgo
gokrazy doesn't support cgo
This commit is contained in:
@@ -1,24 +1,23 @@
|
||||
package pubsub
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
telemetrypb "git.wntrmute.dev/kyle/sensenet/proto"
|
||||
"github.com/go-zeromq/zmq4"
|
||||
"google.golang.org/protobuf/proto"
|
||||
goczmq "gopkg.in/zeromq/goczmq.v4"
|
||||
)
|
||||
|
||||
const singleFrame = 0
|
||||
|
||||
type Publisher struct {
|
||||
addr string
|
||||
sock *goczmq.Sock
|
||||
sock zmq4.Socket
|
||||
}
|
||||
|
||||
func NewPublisher(addr string) (*Publisher, error) {
|
||||
pub := &Publisher{
|
||||
addr: addr,
|
||||
sock: goczmq.NewSock(goczmq.Pub),
|
||||
sock: zmq4.NewPub(context.Background()),
|
||||
}
|
||||
|
||||
pub.Conflate(1)
|
||||
@@ -31,11 +30,11 @@ func NewPublisher(addr string) (*Publisher, error) {
|
||||
}
|
||||
|
||||
func (pub *Publisher) connect() error {
|
||||
return pub.sock.Connect(pub.addr)
|
||||
return pub.sock.Dial(pub.addr)
|
||||
}
|
||||
|
||||
func (pub *Publisher) Conflate(n int) {
|
||||
pub.sock.SetConflate(n)
|
||||
pub.sock.SetOption("CONFLATE", n)
|
||||
}
|
||||
|
||||
func (pub *Publisher) Transmit(topic string, data []byte) error {
|
||||
@@ -44,7 +43,11 @@ func (pub *Publisher) Transmit(topic string, data []byte) error {
|
||||
return err
|
||||
}
|
||||
|
||||
return pub.sock.SendFrame(packet, singleFrame)
|
||||
msg := zmq4.Msg{
|
||||
Frames: [][]byte{packet},
|
||||
}
|
||||
|
||||
return pub.sock.Send(msg)
|
||||
}
|
||||
|
||||
func genPacket(topic string, payload []byte) ([]byte, error) {
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
package pubsub
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"sort"
|
||||
|
||||
telemetrypb "git.wntrmute.dev/kyle/sensenet/proto"
|
||||
"git.wntrmute.dev/kyle/sensenet/topic"
|
||||
"github.com/go-zeromq/zmq4"
|
||||
"google.golang.org/protobuf/proto"
|
||||
"gopkg.in/zeromq/goczmq.v4"
|
||||
)
|
||||
|
||||
func readTopic(b []byte) string {
|
||||
@@ -23,7 +24,7 @@ func protoTopic(topic string) string {
|
||||
type Subscriber struct {
|
||||
addr string
|
||||
publisher string
|
||||
sock *goczmq.Sock
|
||||
sock zmq4.Socket
|
||||
topics map[string]bool
|
||||
}
|
||||
|
||||
@@ -31,7 +32,7 @@ func NewSubscriber(addr, publisher string, topics ...string) (*Subscriber, error
|
||||
sub := &Subscriber{
|
||||
addr: addr,
|
||||
publisher: publisher,
|
||||
sock: goczmq.NewSock(goczmq.Sub),
|
||||
sock: zmq4.NewSub(context.Background()),
|
||||
topics: map[string]bool{},
|
||||
}
|
||||
|
||||
@@ -49,12 +50,12 @@ func NewSubscriber(addr, publisher string, topics ...string) (*Subscriber, error
|
||||
}
|
||||
|
||||
func (sub *Subscriber) Conflate(n int) {
|
||||
sub.sock.SetConflate(n)
|
||||
sub.sock.SetOption("CONFLATE", n)
|
||||
}
|
||||
|
||||
func (sub *Subscriber) connect() error {
|
||||
log.Printf("subscriber dialing %s", sub.addr)
|
||||
return sub.sock.Connect(sub.addr)
|
||||
return sub.sock.Listen(sub.addr)
|
||||
}
|
||||
|
||||
func (sub *Subscriber) Subscribe(topic string) {
|
||||
@@ -63,7 +64,7 @@ func (sub *Subscriber) Subscribe(topic string) {
|
||||
}
|
||||
|
||||
sub.topics[topic] = true
|
||||
sub.sock.SetSubscribe(protoTopic(topic))
|
||||
sub.sock.SetOption(zmq4.OptionSubscribe, protoTopic(topic))
|
||||
}
|
||||
|
||||
func (sub *Subscriber) Topics() []string {
|
||||
@@ -77,19 +78,15 @@ func (sub *Subscriber) Topics() []string {
|
||||
}
|
||||
|
||||
func (sub *Subscriber) receive() ([]byte, error) {
|
||||
var (
|
||||
data []byte
|
||||
err error
|
||||
packet []byte
|
||||
more = 1
|
||||
)
|
||||
for more > 0 {
|
||||
packet, more, err = sub.sock.RecvFrame()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var data []byte
|
||||
|
||||
data = append(data, packet...)
|
||||
msg, err := sub.sock.Recv()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, frame := range msg.Frames {
|
||||
data = append(data, frame...)
|
||||
}
|
||||
|
||||
return data, nil
|
||||
|
||||
Reference in New Issue
Block a user