// RecvFrame reads a frame from the socket and returns it // as a byte array, along with a more flag and and error // (if there is an error) func (s *Sock) RecvFrame() ([]byte, int, error) { frame := C.zframe_recv(unsafe.Pointer(s.zsockT)) if frame == nil { return []byte{0}, 0, errors.New("failed") } dataSize := C.zframe_size(frame) dataPtr := C.zframe_data(frame) b := C.GoBytes(unsafe.Pointer(dataPtr), C.int(dataSize)) more := C.zframe_more(frame) C.zframe_destroy(&frame) return b, int(more), nil }
// RecvFrame reads a frame from the socket and returns it // as a byte array, along with a more flag and and error // (if there is an error) func (s *Sock) RecvFrame() ([]byte, int, error) { if s.zsockT == nil { return nil, -1, ErrRecvFrameAfterDestroy } frame := C.zframe_recv(unsafe.Pointer(s.zsockT)) if frame == nil { return []byte{0}, 0, ErrRecvFrame } dataSize := C.zframe_size(frame) dataPtr := C.zframe_data(frame) b := C.GoBytes(unsafe.Pointer(dataPtr), C.int(dataSize)) more := C.zframe_more(frame) C.zframe_destroy(&frame) return b, int(more), nil }