def recv(self): '''int nng_recv(nng_socket s, void *data, size_t *sizep, int flags);''' data = ffi.new('char **') sizep = ffi.new('size_t *') self.status = lib.nng_recv(self.sock[0], data, sizep, 1) message = ffi.string(data[0]).decode("utf-8") lib.nng_free(data[0], sizep[0]) return message
def dial(self, url): '''int nng_dial(nng_socket s, const char *url, nng_dialer *dp, int flags);''' addr = ffi.new('char[]', url.encode()) self.status = lib.nng_dial(self.sock[0], addr, ffi.NULL, 0)
def subscribe(self, topic): '''int nng_setopt(nng_socket s, const char *opt, const void *val, size_t valsz);''' opt = ffi.new('char[]', constants.NNG_OPT_SUB_SUBSCRIBE.encode()) val = ffi.new('char[]', topic.encode()) self.status = lib.nng_setopt(self.sock[0], opt, val, 0)
def __init__(self): '''Create Sub socket.''' self.sock = ffi.new('nng_socket *')
def send(self, data): '''int nng_send(nng_socket s, void *data, size_t size, int flags);''' buf = ffi.new('char[]', data.encode()) self.status = lib.nng_send(self.sock[0], buf, len(buf), 0)
def __init__(self): '''Create Pub socket.''' self.sock = ffi.new('nng_socket *') self.status = 0