# IpcMessageBinding

`import { IpcMessageBinding } from "destack:ipc/binding";`

Message binding family.

```ds title="IpcMessageBinding"
export interface IpcMessageBinding {
    openMessageQueue(name: &'a readonly string, options: MessageQueueOpenOptions): Result<MessageQueueHandle, HostError>;
    closeMessageQueue(queue: MessageQueueHandle): Result<void, HostError>;
    removeMessageQueue(name: &'a readonly string): Result<void, HostError>;
    sendMessageQueue(queue: MessageQueueHandle, priority: uint32, payload: &'a readonly [uint8], timeoutNanoseconds?: uint64 | undefined): Result<void, HostError>;
    receiveMessageQueue(queue: MessageQueueHandle, buffer: &'a [uint8], timeoutNanoseconds?: uint64 | undefined): Result<MessageQueueMessage, HostError>;
}
```

[language/library/src/ipc/binding/message.ds:34:91](https://github.com/destack-sh/destack/blob/main/language/library/src/ipc/binding/message.ds#L34-L91)

## Members

### `openMessageQueue(name: &'a readonly string, options: MessageQueueOpenOptions): Result<MessageQueueHandle, HostError>`

Open or create one POSIX message queue.

### `closeMessageQueue(queue: MessageQueueHandle): Result<void, HostError>`

Close one message queue handle.

### `removeMessageQueue(name: &'a readonly string): Result<void, HostError>`

Remove one named message queue.

### `sendMessageQueue(queue: MessageQueueHandle, priority: uint32, payload: &'a readonly [uint8], timeoutNanoseconds?: uint64 | undefined): Result<void, HostError>`

Send one message to a queue.

### `receiveMessageQueue(queue: MessageQueueHandle, buffer: &'a [uint8], timeoutNanoseconds?: uint64 | undefined): Result<MessageQueueMessage, HostError>`

Receive one message from a queue.
