mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
The new zero_ok flag is similar to optional for reference parameters, but only in cases where there is a length parameter. If that parameter is a reference parameter itself and is null, or it is non-null and contains a non-zero length, or there is no length parameter, then the main parameter may not be null.
38 lines
989 B
Modula-2
38 lines
989 B
Modula-2
# Channels are objects that enable synchronous IPC of
|
|
# arbitrary-sized messages.
|
|
|
|
object endpoint : object {
|
|
uid c5882f24a4c03b7e
|
|
|
|
capabilities [
|
|
send
|
|
receive
|
|
]
|
|
|
|
method create [constructor]
|
|
|
|
# Send a message on a channel. Blocks until the message
|
|
# is received.
|
|
method send [cap:send] {
|
|
param tag uint64
|
|
param data buffer
|
|
}
|
|
|
|
# Receieve a message on a channel. Blocks until a message
|
|
# is available.
|
|
method receive [cap:receive] {
|
|
param tag uint64 [out]
|
|
param data buffer [out zero_ok]
|
|
param timeout uint64 # Receive timeout in nanoseconds
|
|
}
|
|
|
|
# Send a message on a channel and then await a new message.
|
|
# Equivalent to calling send and then recieve, as a single
|
|
# operation.
|
|
method sendrecv [cap:send cap:receive] {
|
|
param tag uint64 [inout]
|
|
param data buffer [inout zero_ok]
|
|
param timeout uint64 # Receive timeout in nanoseconds
|
|
}
|
|
}
|