mirror of
https://github.com/sbrow/zomq.git
synced 2026-08-26 10:53:32 -04:00
feat: Added send_const proc.
This commit is contained in:
+31
-3
@@ -27,6 +27,10 @@ foreign lib {
|
|||||||
_connect :: proc(s: Socket, addr: cstring) -> c.int ---
|
_connect :: proc(s: Socket, addr: cstring) -> c.int ---
|
||||||
@(link_name = "zmq_send")
|
@(link_name = "zmq_send")
|
||||||
_send :: proc(s: Socket, buf: rawptr, len: c.size_t, flags: Flags) -> c.int ---
|
_send :: proc(s: Socket, buf: rawptr, len: c.size_t, flags: Flags) -> c.int ---
|
||||||
|
|
||||||
|
@(link_name = "zmq_send_const")
|
||||||
|
_send_const :: proc(s: Socket, buf: rawptr, len: c.size_t, flags: Flags) -> c.int ---
|
||||||
|
|
||||||
@(link_name = "zmq_recv")
|
@(link_name = "zmq_recv")
|
||||||
_recv :: proc(s: Socket, buf: rawptr, len: c.size_t, flags: Flags) -> c.int ---
|
_recv :: proc(s: Socket, buf: rawptr, len: c.size_t, flags: Flags) -> c.int ---
|
||||||
@(link_name = "zmq_strerror")
|
@(link_name = "zmq_strerror")
|
||||||
@@ -114,18 +118,42 @@ send :: proc {
|
|||||||
send_string,
|
send_string,
|
||||||
}
|
}
|
||||||
|
|
||||||
send_bytes :: proc(s: Socket, buf: []u8, flags: Flags = Flags{}) -> (int, Error) {
|
send_bytes :: proc(s: Socket, buf: []u8, flags: Flags = {}) -> (int, Error) {
|
||||||
n := _send(s, rawptr(&buf[0]), c.size_t(len(buf)), flags)
|
n := _send(s, rawptr(&buf[0]), c.size_t(len(buf)), flags)
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
return -1, last_error()
|
return -1, last_error()
|
||||||
}
|
}
|
||||||
return int(n), Error{}
|
return int(n), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
send_string :: proc(s: Socket, buf: string, flags: Flags = Flags{}) -> (int, Error) {
|
send_string :: proc(s: Socket, buf: string, flags: Flags = {}) -> (int, Error) {
|
||||||
return send_bytes(s, transmute([]u8)buf, flags)
|
return send_bytes(s, transmute([]u8)buf, flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
send_const :: proc {
|
||||||
|
send_const_string,
|
||||||
|
send_const_bytes,
|
||||||
|
}
|
||||||
|
|
||||||
|
send_const_string :: proc(s: Socket, $str: string, flags: Flags = {}) -> (int, Error) {
|
||||||
|
n := _send_const(s, rawptr($str), len($str), flags)
|
||||||
|
if n < 0 {
|
||||||
|
return -1, last_error()
|
||||||
|
}
|
||||||
|
|
||||||
|
return int(n), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// buf must have @(rodata) or global lifetime.
|
||||||
|
send_const_bytes :: proc(s: Socket, buf: []byte, flags: Flags = {}) -> (int, Error) {
|
||||||
|
n := _send_const(s, rawptr(&buf[0]), len(buf), flags)
|
||||||
|
if n < 0 {
|
||||||
|
return -1, last_error()
|
||||||
|
}
|
||||||
|
|
||||||
|
return int(n), nil
|
||||||
|
}
|
||||||
|
|
||||||
recv :: proc(s: Socket, buf: []u8, flags: Flags = Flags{}) -> (int, Error) {
|
recv :: proc(s: Socket, buf: []u8, flags: Flags = Flags{}) -> (int, Error) {
|
||||||
n := _recv(s, rawptr(&buf[0]), c.size_t(len(buf)), flags)
|
n := _recv(s, rawptr(&buf[0]), c.size_t(len(buf)), flags)
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user