Asterisk - The Open Source Telephony Project  18.5.0
Functions | Variables
stasis_endpoints.c File Reference

Stasis endpoint API. More...

#include "asterisk.h"
#include "asterisk/astobj2.h"
#include "asterisk/stasis.h"
#include "asterisk/stasis_endpoints.h"
Include dependency graph for stasis_endpoints.c:

Go to the source code of this file.

Functions

struct stasis_messageast_endpoint_blob_create (struct ast_endpoint *endpoint, struct stasis_message_type *type, struct ast_json *blob)
 Creates a ast_endpoint_blob message. More...
 
void ast_endpoint_blob_publish (struct ast_endpoint *endpoint, struct stasis_message_type *type, struct ast_json *blob)
 Creates and publishes a ast_endpoint_blob message. More...
 
struct stasis_cacheast_endpoint_cache (void)
 Backend cache for ast_endpoint_topic_all_cached(). More...
 
struct stasis_cp_allast_endpoint_cache_all (void)
 
struct ast_endpoint_snapshotast_endpoint_latest_snapshot (const char *tech, const char *name)
 Retrieve the most recent snapshot for the endpoint with the given name. More...
 
struct ast_jsonast_endpoint_snapshot_to_json (const struct ast_endpoint_snapshot *snapshot, const struct stasis_message_sanitizer *sanitize)
 Build a JSON object from a ast_endpoint_snapshot. More...
 
int ast_endpoint_stasis_init (void)
 Initialization function for endpoint stasis support. More...
 
struct stasis_topicast_endpoint_topic_all (void)
 Topic for all endpoint releated messages. More...
 
struct stasis_topicast_endpoint_topic_all_cached (void)
 Cached topic for all endpoint related messages. More...
 
static struct ast_manager_event_blobcontactstatus_to_ami (struct stasis_message *msg)
 
static struct ast_jsoncontactstatus_to_json (struct stasis_message *msg, const struct stasis_message_sanitizer *sanitize)
 
static void endpoint_blob_dtor (void *obj)
 
static const char * endpoint_snapshot_get_id (struct stasis_message *message)
 Callback extract a unique identity from a snapshot message. More...
 
static void endpoints_stasis_cleanup (void)
 
static struct ast_manager_event_blobpeerstatus_to_ami (struct stasis_message *msg)
 
static struct ast_jsonpeerstatus_to_json (struct stasis_message *msg, const struct stasis_message_sanitizer *sanitize)
 
 STASIS_MESSAGE_TYPE_DEFN (ast_endpoint_snapshot_type)
 
 STASIS_MESSAGE_TYPE_DEFN (ast_endpoint_state_type,.to_ami=peerstatus_to_ami,.to_json=peerstatus_to_json,)
 
 STASIS_MESSAGE_TYPE_DEFN (ast_endpoint_contact_state_type,.to_ami=contactstatus_to_ami,.to_json=contactstatus_to_json)
 

Variables

static struct stasis_cp_allendpoint_cache_all
 

Detailed Description

Stasis endpoint API.

Author
David M. Lee, II dlee@.nosp@m.digi.nosp@m.um.co.nosp@m.m

Definition in file stasis_endpoints.c.

Function Documentation

◆ ast_endpoint_snapshot_to_json()

struct ast_json* ast_endpoint_snapshot_to_json ( const struct ast_endpoint_snapshot snapshot,
const struct stasis_message_sanitizer sanitize 
)

Build a JSON object from a ast_endpoint_snapshot.

Parameters
snapshotEndpoint snapshot.
sanitizeThe message sanitizer to use on the snapshot
Returns
JSON object representing endpoint snapshot.
NULL on error

Definition at line 398 of file stasis_endpoints.c.

References ast_assert, ast_endpoint_state_to_string(), ast_json_array_append(), ast_json_integer_create(), ast_json_object_get(), ast_json_object_set(), ast_json_pack(), ast_json_string_create(), ast_json_unref(), stasis_message_sanitizer::channel_id, ast_endpoint_snapshot::channel_ids, ast_endpoint_snapshot::max_channels, NULL, ast_endpoint_snapshot::num_channels, ast_endpoint_snapshot::resource, ast_endpoint_snapshot::state, and ast_endpoint_snapshot::tech.

Referenced by ast_ari_endpoints_get(), ast_ari_endpoints_list(), ast_ari_endpoints_list_by_tech(), contactstatus_to_json(), message_received_handler(), multi_user_event_to_json(), peerstatus_to_json(), and simple_endpoint_event().

401 {
402  struct ast_json *json;
403  struct ast_json *channel_array;
404  int i;
405 
406  json = ast_json_pack("{s: s, s: s, s: s, s: []}",
407  "technology", snapshot->tech,
408  "resource", snapshot->resource,
409  "state", ast_endpoint_state_to_string(snapshot->state),
410  "channel_ids");
411 
412  if (json == NULL) {
413  return NULL;
414  }
415 
416  if (snapshot->max_channels != -1) {
417  int res = ast_json_object_set(json, "max_channels",
419  if (res != 0) {
420  ast_json_unref(json);
421 
422  return NULL;
423  }
424  }
425 
426  channel_array = ast_json_object_get(json, "channel_ids");
427  ast_assert(channel_array != NULL);
428  for (i = 0; i < snapshot->num_channels; ++i) {
429  int res;
430 
431  if (sanitize && sanitize->channel_id
432  && sanitize->channel_id(snapshot->channel_ids[i])) {
433  continue;
434  }
435 
436  res = ast_json_array_append(channel_array,
437  ast_json_string_create(snapshot->channel_ids[i]));
438  if (res != 0) {
439  ast_json_unref(json);
440 
441  return NULL;
442  }
443  }
444 
445  return json;
446 }
struct ast_json * ast_json_pack(char const *format,...)
Helper for creating complex JSON values.
Definition: json.c:591
void ast_json_unref(struct ast_json *value)
Decrease refcount on value. If refcount reaches zero, value is freed.
Definition: json.c:73
int(* channel_id)(const char *channel_id)
Callback which determines whether a channel should be sanitized from a message based on the channel&#39;s...
Definition: stasis.h:210
#define ast_assert(a)
Definition: utils.h:695
#define NULL
Definition: resample.c:96
int ast_json_object_set(struct ast_json *object, const char *key, struct ast_json *value)
Set a field in a JSON object.
Definition: json.c:404
struct ast_json * ast_json_string_create(const char *value)
Construct a JSON string from value.
Definition: json.c:268
const ast_string_field resource
int ast_json_array_append(struct ast_json *array, struct ast_json *value)
Append to an array.
Definition: json.c:368
const ast_string_field tech
const char * ast_endpoint_state_to_string(enum ast_endpoint_state state)
Returns a string representation of the given endpoint state.
struct ast_json * ast_json_object_get(struct ast_json *object, const char *key)
Get a field from a JSON object.
Definition: json.c:397
Abstract JSON element (object, array, string, int, ...).
enum ast_endpoint_state state
struct ast_json * ast_json_integer_create(intmax_t value)
Create a JSON integer.
Definition: json.c:317

◆ ast_endpoint_stasis_init()

int ast_endpoint_stasis_init ( void  )

Initialization function for endpoint stasis support.

Returns
0 on success.
non-zero on error.
Since
12

Definition at line 458 of file stasis_endpoints.c.

References ast_endpoint_contact_state_type(), ast_endpoint_snapshot_type(), ast_endpoint_state_type(), ast_register_cleanup(), endpoint_snapshot_get_id(), endpoints_stasis_cleanup(), stasis_cp_all_create(), and STASIS_MESSAGE_TYPE_INIT.

Referenced by asterisk_daemon().

459 {
460  int res = 0;
462 
463  endpoint_cache_all = stasis_cp_all_create("endpoint:all",
465  if (!endpoint_cache_all) {
466  return -1;
467  }
468 
472 
473  return res;
474 }
#define STASIS_MESSAGE_TYPE_INIT(name)
Boiler-plate messaging macro for initializing message types.
Definition: stasis.h:1501
struct stasis_message_type * ast_endpoint_snapshot_type(void)
Message type for ast_endpoint_snapshot.
static const char * endpoint_snapshot_get_id(struct stasis_message *message)
Callback extract a unique identity from a snapshot message.
int ast_register_cleanup(void(*func)(void))
Register a function to be executed before Asterisk gracefully exits.
Definition: clicompat.c:19
struct stasis_message_type * ast_endpoint_state_type(void)
Message type for endpoint state changes.
static struct stasis_cp_all * endpoint_cache_all
static void endpoints_stasis_cleanup(void)
struct stasis_message_type * ast_endpoint_contact_state_type(void)
Message type for endpoint contact state changes.
struct stasis_cp_all * stasis_cp_all_create(const char *name, snapshot_get_id id_fn)
Create an all instance of the cache pattern.

◆ contactstatus_to_ami()

static struct ast_manager_event_blob* contactstatus_to_ami ( struct stasis_message msg)
static

Definition at line 203 of file stasis_endpoints.c.

References ast_free, ast_json_object_get(), ast_json_string_get(), ast_manager_event_blob_create(), ast_str_append(), ast_str_buffer(), ast_str_create, ast_endpoint_blob::blob, EVENT_FLAG_SYSTEM, NULL, RAII_VAR, stasis_message_data(), and value.

Referenced by contactstatus_to_json().

204 {
205  struct ast_endpoint_blob *obj = stasis_message_data(msg);
206  RAII_VAR(struct ast_str *, contactstatus_event_string, ast_str_create(64), ast_free);
207  const char *value;
208 
209  if (!(value = ast_json_string_get(ast_json_object_get(obj->blob, "uri")))) {
210  return NULL;
211  }
212  ast_str_append(&contactstatus_event_string, 0, "URI: %s\r\n", value);
213 
214  if (!(value = ast_json_string_get(ast_json_object_get(obj->blob, "contact_status")))) {
215  return NULL;
216  }
217  ast_str_append(&contactstatus_event_string, 0, "ContactStatus: %s\r\n", value);
218 
219  if (!(value = ast_json_string_get(ast_json_object_get(obj->blob, "aor")))) {
220  return NULL;
221  }
222  ast_str_append(&contactstatus_event_string, 0, "AOR: %s\r\n", value);
223 
224  if (!(value = ast_json_string_get(ast_json_object_get(obj->blob, "endpoint_name")))) {
225  return NULL;
226  }
227  ast_str_append(&contactstatus_event_string, 0, "EndpointName: %s\r\n", value);
228 
229  if ((value = ast_json_string_get(ast_json_object_get(obj->blob, "roundtrip_usec")))) {
230  ast_str_append(&contactstatus_event_string, 0, "RoundtripUsec: %s\r\n", value);
231  }
232 
233  return ast_manager_event_blob_create(EVENT_FLAG_SYSTEM, "ContactStatus",
234  "%s", ast_str_buffer(contactstatus_event_string));
235 }
char * ast_str_buffer(const struct ast_str *buf)
Returns the string buffer within the ast_str buf.
Definition: strings.h:714
int ast_str_append(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Append to a thread local dynamic string.
Definition: strings.h:1091
#define NULL
Definition: resample.c:96
int value
Definition: syslog.c:37
Blob of data associated with an endpoint.
struct ast_manager_event_blob * ast_manager_event_blob_create(int event_flags, const char *manager_event, const char *extra_fields_fmt,...)
Construct a ast_manager_event_blob.
Definition: manager.c:9727
#define EVENT_FLAG_SYSTEM
Definition: manager.h:71
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.
Definition: utils.h:911
const char * ast_json_string_get(const struct ast_json *string)
Get the value of a JSON string.
Definition: json.c:273
The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field ...
Definition: strings.h:584
void * stasis_message_data(const struct stasis_message *msg)
Get the data contained in a message.
struct ast_json * blob
#define ast_free(a)
Definition: astmm.h:182
struct ast_json * ast_json_object_get(struct ast_json *object, const char *key)
Get a field from a JSON object.
Definition: json.c:397
#define ast_str_create(init_len)
Create a malloc&#39;ed dynamic length string.
Definition: strings.h:620

◆ contactstatus_to_json()

static struct ast_json* contactstatus_to_json ( struct stasis_message msg,
const struct stasis_message_sanitizer sanitize 
)
static

Definition at line 237 of file stasis_endpoints.c.

References ast_endpoint_contact_state_type(), ast_endpoint_snapshot_to_json(), ast_json_object_get(), ast_json_pack(), ast_json_string_get(), ast_json_timeval(), ast_json_unref(), ast_strlen_zero, ast_endpoint_blob::blob, contactstatus_to_ami(), NULL, ast_endpoint_blob::snapshot, stasis_message_data(), stasis_message_timestamp(), STASIS_MESSAGE_TYPE_DEFN(), and to_ami().

238 {
239  struct ast_endpoint_blob *obj = stasis_message_data(msg);
240  struct ast_json *json_endpoint;
241  struct ast_json *json_final;
242  const char *rtt;
243  const struct timeval *tv = stasis_message_timestamp(msg);
244 
245  json_endpoint = ast_endpoint_snapshot_to_json(obj->snapshot, NULL);
246  if (!json_endpoint) {
247  return NULL;
248  }
249 
250  /* The roundtrip time is optional. */
251  rtt = ast_json_string_get(ast_json_object_get(obj->blob, "roundtrip_usec"));
252  if (!ast_strlen_zero(rtt)) {
253  json_final = ast_json_pack("{s: s, s: o, s: o, s: { s: s, s: s, s: s, s: s } } ",
254  "type", "ContactStatusChange",
255  "timestamp", ast_json_timeval(*tv, NULL),
256  "endpoint", json_endpoint,
257  "contact_info",
258  "uri", ast_json_string_get(ast_json_object_get(obj->blob, "uri")),
259  "contact_status", ast_json_string_get(ast_json_object_get(obj->blob,
260  "contact_status")),
261  "aor", ast_json_string_get(ast_json_object_get(obj->blob, "aor")),
262  "roundtrip_usec", rtt);
263  } else {
264  json_final = ast_json_pack("{s: s, s: o, s: o, s: { s: s, s: s, s: s } } ",
265  "type", "ContactStatusChange",
266  "timestamp", ast_json_timeval(*tv, NULL),
267  "endpoint", json_endpoint,
268  "contact_info",
269  "uri", ast_json_string_get(ast_json_object_get(obj->blob, "uri")),
270  "contact_status", ast_json_string_get(ast_json_object_get(obj->blob,
271  "contact_status")),
272  "aor", ast_json_string_get(ast_json_object_get(obj->blob, "aor")));
273  }
274  if (!json_final) {
275  ast_json_unref(json_endpoint);
276  }
277 
278  return json_final;
279 }
struct ast_json * ast_json_pack(char const *format,...)
Helper for creating complex JSON values.
Definition: json.c:591
void ast_json_unref(struct ast_json *value)
Decrease refcount on value. If refcount reaches zero, value is freed.
Definition: json.c:73
#define NULL
Definition: resample.c:96
Blob of data associated with an endpoint.
#define ast_strlen_zero(foo)
Definition: strings.h:52
const struct timeval * stasis_message_timestamp(const struct stasis_message *msg)
Get the time when a message was created.
const char * ast_json_string_get(const struct ast_json *string)
Get the value of a JSON string.
Definition: json.c:273
struct ast_json * ast_json_timeval(const struct timeval tv, const char *zone)
Construct a timeval as JSON.
Definition: json.c:649
struct ast_json * ast_endpoint_snapshot_to_json(const struct ast_endpoint_snapshot *snapshot, const struct stasis_message_sanitizer *sanitize)
Build a JSON object from a ast_endpoint_snapshot.
void * stasis_message_data(const struct stasis_message *msg)
Get the data contained in a message.
struct ast_json * blob
struct ast_endpoint_snapshot * snapshot
struct ast_json * ast_json_object_get(struct ast_json *object, const char *key)
Get a field from a JSON object.
Definition: json.c:397
Abstract JSON element (object, array, string, int, ...).

◆ endpoint_blob_dtor()

static void endpoint_blob_dtor ( void *  obj)
static

Definition at line 286 of file stasis_endpoints.c.

References ao2_cleanup, and ast_json_unref().

Referenced by ast_endpoint_blob_create().

287 {
288  struct ast_endpoint_blob *event = obj;
289  ao2_cleanup(event->snapshot);
290  ast_json_unref(event->blob);
291 }
void ast_json_unref(struct ast_json *value)
Decrease refcount on value. If refcount reaches zero, value is freed.
Definition: json.c:73
Definition: astman.c:222
Blob of data associated with an endpoint.
#define ao2_cleanup(obj)
Definition: astobj2.h:1958

◆ endpoint_snapshot_get_id()

static const char* endpoint_snapshot_get_id ( struct stasis_message message)
static

Callback extract a unique identity from a snapshot message.

This identity is unique to the underlying object of the snapshot, such as the UniqueId field of a channel.

Parameters
messageMessage to extract id from.
Returns
String representing the snapshot's id.
NULL if the message_type of the message isn't a handled snapshot.
Since
12

Definition at line 384 of file stasis_endpoints.c.

References ast_endpoint_snapshot_type(), ast_endpoint_snapshot::id, NULL, stasis_message_data(), and stasis_message_type().

Referenced by ast_endpoint_stasis_init().

385 {
386  struct ast_endpoint_snapshot *snapshot;
387 
389  return NULL;
390  }
391 
392  snapshot = stasis_message_data(message);
393 
394  return snapshot->id;
395 }
struct stasis_message_type * ast_endpoint_snapshot_type(void)
Message type for ast_endpoint_snapshot.
struct stasis_message_type * stasis_message_type(const struct stasis_message *msg)
Get the message type for a stasis_message.
const ast_string_field id
#define NULL
Definition: resample.c:96
A snapshot of an endpoint&#39;s state.
void * stasis_message_data(const struct stasis_message *msg)
Get the data contained in a message.

◆ endpoints_stasis_cleanup()

static void endpoints_stasis_cleanup ( void  )
static

Definition at line 448 of file stasis_endpoints.c.

References ao2_cleanup, ast_endpoint_contact_state_type(), ast_endpoint_snapshot_type(), ast_endpoint_state_type(), NULL, and STASIS_MESSAGE_TYPE_CLEANUP.

Referenced by ast_endpoint_stasis_init().

449 {
453 
456 }
struct stasis_message_type * ast_endpoint_snapshot_type(void)
Message type for ast_endpoint_snapshot.
#define STASIS_MESSAGE_TYPE_CLEANUP(name)
Boiler-plate messaging macro for cleaning up message types.
Definition: stasis.h:1523
#define NULL
Definition: resample.c:96
struct stasis_message_type * ast_endpoint_state_type(void)
Message type for endpoint state changes.
static struct stasis_cp_all * endpoint_cache_all
#define ao2_cleanup(obj)
Definition: astobj2.h:1958
struct stasis_message_type * ast_endpoint_contact_state_type(void)
Message type for endpoint contact state changes.

◆ peerstatus_to_ami()

static struct ast_manager_event_blob* peerstatus_to_ami ( struct stasis_message msg)
static

Definition at line 128 of file stasis_endpoints.c.

References ast_free, ast_json_object_get(), ast_json_string_get(), ast_manager_event_blob_create(), ast_str_append(), ast_str_buffer(), ast_str_create, ast_endpoint_blob::blob, EVENT_FLAG_SYSTEM, NULL, RAII_VAR, ast_endpoint_snapshot::resource, ast_endpoint_blob::snapshot, stasis_message_data(), ast_endpoint_snapshot::tech, and value.

Referenced by peerstatus_to_json().

129 {
130  struct ast_endpoint_blob *obj = stasis_message_data(msg);
131  RAII_VAR(struct ast_str *, peerstatus_event_string, ast_str_create(64), ast_free);
132  const char *value;
133 
134  /* peer_status is the only *required* thing */
135  if (!(value = ast_json_string_get(ast_json_object_get(obj->blob, "peer_status")))) {
136  return NULL;
137  }
138  ast_str_append(&peerstatus_event_string, 0, "PeerStatus: %s\r\n", value);
139 
140  if ((value = ast_json_string_get(ast_json_object_get(obj->blob, "cause")))) {
141  ast_str_append(&peerstatus_event_string, 0, "Cause: %s\r\n", value);
142  }
143  if ((value = ast_json_string_get(ast_json_object_get(obj->blob, "address")))) {
144  ast_str_append(&peerstatus_event_string, 0, "Address: %s\r\n", value);
145  }
146  if ((value = ast_json_string_get(ast_json_object_get(obj->blob, "port")))) {
147  ast_str_append(&peerstatus_event_string, 0, "Port: %s\r\n", value);
148  }
149  if ((value = ast_json_string_get(ast_json_object_get(obj->blob, "time")))) {
150  ast_str_append(&peerstatus_event_string, 0, "Time: %s\r\n", value);
151  }
152 
154  "ChannelType: %s\r\n"
155  "Peer: %s/%s\r\n"
156  "%s",
157  obj->snapshot->tech,
158  obj->snapshot->tech,
159  obj->snapshot->resource,
160  ast_str_buffer(peerstatus_event_string));
161 }
char * ast_str_buffer(const struct ast_str *buf)
Returns the string buffer within the ast_str buf.
Definition: strings.h:714
int ast_str_append(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Append to a thread local dynamic string.
Definition: strings.h:1091
#define NULL
Definition: resample.c:96
int value
Definition: syslog.c:37
Blob of data associated with an endpoint.
struct ast_manager_event_blob * ast_manager_event_blob_create(int event_flags, const char *manager_event, const char *extra_fields_fmt,...)
Construct a ast_manager_event_blob.
Definition: manager.c:9727
#define EVENT_FLAG_SYSTEM
Definition: manager.h:71
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.
Definition: utils.h:911
const ast_string_field resource
const char * ast_json_string_get(const struct ast_json *string)
Get the value of a JSON string.
Definition: json.c:273
The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field ...
Definition: strings.h:584
void * stasis_message_data(const struct stasis_message *msg)
Get the data contained in a message.
const ast_string_field tech
struct ast_json * blob
#define ast_free(a)
Definition: astmm.h:182
struct ast_endpoint_snapshot * snapshot
struct ast_json * ast_json_object_get(struct ast_json *object, const char *key)
Get a field from a JSON object.
Definition: json.c:397
#define ast_str_create(init_len)
Create a malloc&#39;ed dynamic length string.
Definition: strings.h:620

◆ peerstatus_to_json()

static struct ast_json* peerstatus_to_json ( struct stasis_message msg,
const struct stasis_message_sanitizer sanitize 
)
static

Definition at line 163 of file stasis_endpoints.c.

References ast_endpoint_snapshot_to_json(), ast_endpoint_state_type(), ast_json_object_create(), ast_json_object_update(), ast_json_pack(), ast_json_timeval(), ast_json_unref(), ast_endpoint_blob::blob, NULL, peerstatus_to_ami(), ast_endpoint_blob::snapshot, stasis_message_data(), stasis_message_timestamp(), STASIS_MESSAGE_TYPE_DEFN(), and to_ami().

164 {
165  struct ast_endpoint_blob *obj = stasis_message_data(msg);
166  struct ast_json *json_endpoint;
167  struct ast_json *json_peer;
168  struct ast_json *json_final;
169  const struct timeval *tv = stasis_message_timestamp(msg);
170 
171  json_endpoint = ast_endpoint_snapshot_to_json(obj->snapshot, NULL);
172  if (!json_endpoint) {
173  return NULL;
174  }
175 
176  json_peer = ast_json_object_create();
177  if (!json_peer) {
178  ast_json_unref(json_endpoint);
179  return NULL;
180  }
181 
182  /* Copy all fields from the blob */
183  ast_json_object_update(json_peer, obj->blob);
184 
185  json_final = ast_json_pack("{s: s, s: o, s: o, s: o }",
186  "type", "PeerStatusChange",
187  "timestamp", ast_json_timeval(*tv, NULL),
188  "endpoint", json_endpoint,
189  "peer", json_peer);
190  if (!json_final) {
191  ast_json_unref(json_endpoint);
192  ast_json_unref(json_peer);
193  }
194 
195  return json_final;
196 }
struct ast_json * ast_json_pack(char const *format,...)
Helper for creating complex JSON values.
Definition: json.c:591
void ast_json_unref(struct ast_json *value)
Decrease refcount on value. If refcount reaches zero, value is freed.
Definition: json.c:73
int ast_json_object_update(struct ast_json *object, struct ast_json *other)
Update object with all of the fields of other.
Definition: json.c:416
#define NULL
Definition: resample.c:96
Blob of data associated with an endpoint.
const struct timeval * stasis_message_timestamp(const struct stasis_message *msg)
Get the time when a message was created.
struct ast_json * ast_json_timeval(const struct timeval tv, const char *zone)
Construct a timeval as JSON.
Definition: json.c:649
struct ast_json * ast_endpoint_snapshot_to_json(const struct ast_endpoint_snapshot *snapshot, const struct stasis_message_sanitizer *sanitize)
Build a JSON object from a ast_endpoint_snapshot.
void * stasis_message_data(const struct stasis_message *msg)
Get the data contained in a message.
struct ast_json * blob
struct ast_endpoint_snapshot * snapshot
struct ast_json * ast_json_object_create(void)
Create a new JSON object.
Definition: json.c:389
Abstract JSON element (object, array, string, int, ...).

◆ STASIS_MESSAGE_TYPE_DEFN() [1/3]

STASIS_MESSAGE_TYPE_DEFN ( ast_endpoint_snapshot_type  )

◆ STASIS_MESSAGE_TYPE_DEFN() [2/3]

STASIS_MESSAGE_TYPE_DEFN ( ast_endpoint_state_type  ,
to_ami = peerstatus_to_ami,
to_json = peerstatus_to_json 
)

◆ STASIS_MESSAGE_TYPE_DEFN() [3/3]

STASIS_MESSAGE_TYPE_DEFN ( ast_endpoint_contact_state_type  ,
to_ami = contactstatus_to_ami,
to_json = contactstatus_to_json 
)

Variable Documentation

◆ endpoint_cache_all

struct stasis_cp_all* endpoint_cache_all
static

Definition at line 104 of file stasis_endpoints.c.

Referenced by ast_endpoint_cache_all().