mirror of
https://github.com/sbrow/zomq.git
synced 2026-08-26 10:53:32 -04:00
refactor: Moved zmq package to the top level.
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
package main
|
||||
|
||||
import zmq "../../"
|
||||
import "core:bufio"
|
||||
import "core:fmt"
|
||||
import "core:log"
|
||||
import "core:os"
|
||||
|
||||
main :: proc() {
|
||||
context.logger = log.create_console_logger(.Debug, {})
|
||||
|
||||
major, minor, patch := zmq.version()
|
||||
log.infof(
|
||||
"zmq echo (libzmq %d.%d.%d) over inproc; type lines, Ctrl-D to quit",
|
||||
major,
|
||||
minor,
|
||||
patch,
|
||||
)
|
||||
|
||||
ctx := zmq.ctx_new()
|
||||
defer zmq.ctx_term(ctx)
|
||||
|
||||
rep, serr := zmq.socket(ctx, .REP)
|
||||
if serr != nil {
|
||||
log.panic(zmq.strerror(serr))
|
||||
}
|
||||
defer zmq.close(rep)
|
||||
if err := zmq.bind(rep, "inproc://echo"); err != nil {
|
||||
log.panic(zmq.strerror(err))
|
||||
}
|
||||
|
||||
req, cerr := zmq.socket(ctx, .REQ)
|
||||
if cerr != nil {
|
||||
log.panicf("err: %v (%d) %s", cerr, cerr, zmq.strerror(cerr))
|
||||
}
|
||||
defer zmq.close(req)
|
||||
if err := zmq.connect(req, "inproc://echo"); err != nil {
|
||||
log.panic(zmq.strerror(err))
|
||||
}
|
||||
|
||||
echo(req, rep)
|
||||
}
|
||||
|
||||
echo :: proc(client, server: zmq.Socket) {
|
||||
scanner: bufio.Scanner
|
||||
bufio.scanner_init(&scanner, os.to_reader(os.stdin))
|
||||
defer bufio.scanner_destroy(&scanner)
|
||||
|
||||
buf: [255]u8
|
||||
for bufio.scan(&scanner) {
|
||||
line := bufio.scanner_text(&scanner)
|
||||
if len(line) == 0 {
|
||||
continue
|
||||
}
|
||||
if _, err := zmq.send(client, line); err != nil {
|
||||
fmt.eprintfln("send: %s", zmq.strerror(err))
|
||||
return
|
||||
}
|
||||
n, rerr := zmq.recv(server, buf[:])
|
||||
if rerr != nil {
|
||||
fmt.eprintfln("rep recv: %s", zmq.strerror(rerr))
|
||||
return
|
||||
}
|
||||
if _, werr := zmq.send(server, buf[:n]); werr != nil {
|
||||
fmt.eprintfln("rep send: %v %s", werr, zmq.strerror(werr))
|
||||
return
|
||||
}
|
||||
m, qerr := zmq.recv(client, buf[:])
|
||||
if qerr != nil {
|
||||
fmt.eprintfln("req recv: %s", zmq.strerror(qerr))
|
||||
return
|
||||
}
|
||||
fmt.println(string(buf[:m]))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user