fix posix.mq_receive compilation with cpp backend (#20710)
* fix posix.mq_receive compilation with cpp backend * only enable runnableExample on posix * linux, not posix * simplify example * add test * mqueue.h does not exist on MacOS * place test case in own block * drop runnableExamples
This commit is contained in:
parent
4491da4c4d
commit
51bef9b4a8
3 changed files with 88 additions and 28 deletions
|
|
@ -7,7 +7,7 @@ outputsub: ""
|
|||
when not defined(windows):
|
||||
|
||||
import posix
|
||||
import std/syncio
|
||||
import std/[assertions, syncio]
|
||||
|
||||
var
|
||||
u: Utsname
|
||||
|
|
@ -18,3 +18,46 @@ when not defined(windows):
|
|||
writeLine(stdout, u.nodename)
|
||||
writeLine(stdout, u.release)
|
||||
writeLine(stdout, u.machine)
|
||||
|
||||
when not (defined(nintendoswitch) or defined(macos) or defined(macosx)):
|
||||
block:
|
||||
type Message = object
|
||||
value: int
|
||||
|
||||
const MQ_PATH: cstring = "/top_level_file"
|
||||
const MQ_PRIORITY: cuint = 170
|
||||
const MQ_MESSAGE_SIZE: csize_t = csize_t(sizeof(Message))
|
||||
|
||||
let mqd_a: posix.MqAttr = MqAttr(mq_maxmsg: 10, mq_msgsize: clong(MQ_MESSAGE_SIZE))
|
||||
let writable: posix.Mqd = posix.mq_open(
|
||||
MQ_PATH,
|
||||
posix.O_CREAT or posix.O_WRONLY or posix.O_NONBLOCK,
|
||||
posix.S_IRWXU,
|
||||
addr(mqd_a)
|
||||
)
|
||||
let readable: posix.Mqd = posix.mq_open(
|
||||
MQ_PATH,
|
||||
posix.O_RDONLY or posix.O_NONBLOCK,
|
||||
posix.S_IRWXU,
|
||||
addr(mqd_a)
|
||||
)
|
||||
|
||||
let sent: Message = Message(value: 88)
|
||||
block:
|
||||
let success: int = writable.mq_send(
|
||||
cast[cstring](sent.addr),
|
||||
MQ_MESSAGE_SIZE,
|
||||
MQ_PRIORITY
|
||||
)
|
||||
doAssert success == 0, $success
|
||||
|
||||
block:
|
||||
var buffer: Message
|
||||
var priority: cuint
|
||||
let bytesRead: int = readable.mq_receive(
|
||||
cast[cstring](buffer.addr),
|
||||
MQ_MESSAGE_SIZE,
|
||||
priority
|
||||
)
|
||||
doAssert buffer == sent
|
||||
doAssert bytesRead == int(MQ_MESSAGE_SIZE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue