---
name: "cmap_dispatch"
section: "3"
platform: "linux"
package: "libcmap-dev"
version: "3.1.9-2+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cmap_dispatch"
---

# cmap\_dispatch(3)

Dispatches callbacks from the CMAP service

## NAME

cmap\_dispatch - Dispatches callbacks from the CMAP service

## SYNOPSIS

**#include \<corosync/cmap.h\>**

**cs\_error\_t** **cmap\_dispatch (cmap\_handle\_t** *handle***, cs\_dispatch\_flags\_t** *dispatch\_types***);**

## DESCRIPTION

The **cmap\_dispatch** function is used to dispatch configuration changes.

Each application may have several connections to the CMAP API.  Each application uses the *handle* argument to uniquely identify the connection.

The *dispatch\_types* argument is used to identify the type of dispatch to execute.  The possible types are CS\_DISPATCH\_ONE, CS\_DISPATCH\_ALL and CS\_DISPATCH\_BLOCKING.

The dispatch values have the following meanings:

- **CS\_DISPATCH\_ONE**

  Dispatch at least one callback, blocking until the callback is dispatched.

- **CS\_DISPATCH\_ALL**

  Dispatch all waiting callbacks without blocking to wait for any callbacks.

- **CS\_DISPATCH\_BLOCKING**

  Dispatch all callbacks blocking indefinitely.  This is used in a threaded program where a thread is created, and then cs\_dispatch() is called immediately from the created thread to execute callbacks.

- **CS\_DISPATCH\_ONE\_NONBLOCKING**

  Dispatch at most one callback. If there is no pending callback, CS\_ERR\_TRY\_AGAIN is returned.

It's needed to call **[cmap\_track\_add(3)](/cmap_track_add/3.md)** to add tracked items and receive callbacks.

## RETURN VALUE

This call returns the CS\_OK value if successful, otherwise an error is returned.

## SEE ALSO

[**cmap\_track\_add**(3)](/cmap_track_add/3.md), [**cmap\_track\_delete**(3)](/cmap_track_delete/3.md), [**cmap\_overview**(3)](/cmap_overview/3.md)

**CS\_ERR\_TRY\_AGAIN** Resource temporarily unavailable

**CS\_ERR\_INVALID\_PARAM** Invalid argument

**CS\_ERR\_ACCESS** Permission denied

**CS\_ERR\_LIBRARY** The connection failed

**CS\_ERR\_INTERRUPT** System call interrupted by a signal

**CS\_ERR\_NOT\_SUPPORTED** The requested protocol/functionality not supported

**CS\_ERR\_MESSAGE\_ERROR** Incorrect auth message received

**CS\_ERR\_NO\_MEMORY** Not enough memory to complete the requested task
