src.dualinventive.com/go/redis-proxy/vendor/github.com/pebbe/zmq4/draft/zmq42draft.go

68 lines
1.3 KiB
Go

package zmq4
/*
#include <zmq.h>
#include <stdlib.h>
#include <string.h>
#include "zmq4.h"
#include "zmq42draft.h"
#ifdef ZMQ42HASDRAFT
int zmq4has42draft = 1;
#else
int zmq4has42draft = 0;
// Version >= 4.2.0 with draft
int zmq_join (void *s, const char *group) { return 0; }
int zmq_leave (void *s, const char *group) { return 0; }
int zmq_msg_set_routing_id(zmq_msg_t *msg, uint32_t routing_id) { return 0; }
uint32_t zmq_msg_routing_id(zmq_msg_t *msg) { return 0; }
int zmq_msg_set_group(zmq_msg_t *msg, const char *group) { return 0; }
const char *zmq_msg_group(zmq_msg_t *msg) { return NULL; }
#endif // ZMQ42HASDRAFT
*/
import "C"
import (
"unsafe"
)
type OptRoutingId uint32
type OptGroup string
var (
has42draft bool
)
func init() {
has42draft = (C.zmq4has42draft != 0)
}
func (soc *Socket) Join(group string) error {
if !has42draft {
return ErrorNotImplemented42draft
}
cs := C.CString(group)
defer C.free(unsafe.Pointer(cs))
n, err := C.zmq_join(soc.soc, cs)
if n != 0 {
return errget(err)
}
return nil
}
func (soc *Socket) Leave(group string) error {
if !has42draft {
return ErrorNotImplemented42draft
}
cs := C.CString(group)
defer C.free(unsafe.Pointer(cs))
n, err := C.zmq_leave(soc.soc, cs)
if n != 0 {
return errget(err)
}
return nil
}