remove cgo

gokrazy doesn't support cgo
This commit is contained in:
2023-05-13 18:32:29 -07:00
parent 0db2ab6b97
commit 354a101d26
4 changed files with 38 additions and 31 deletions

View File

@@ -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) {

View File

@@ -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