#endif
void ao2_iterator_cleanup(struct ao2_iterator *iter);
+/*!
+ * \brief Get a count of the iterated container objects.
+ *
+ * \param iter the iterator to query
+ *
+ * \retval The number of objects in the iterated container
+ */
+int ao2_iterator_count(struct ao2_iterator *iter);
+
#endif /* _ASTERISK_ASTOBJ2_H */
return internal_ao2_iterator_next(iter, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__);
}
+int ao2_iterator_count(struct ao2_iterator *iter)
+{
+ return ao2_container_count(iter->c);
+}
+
static void container_destruct(void *_c)
{
struct ao2_container *c = _c;
};
successful = ao2_callback(session->media, OBJ_MULTIPLE, handle_negotiated_sdp_session_media, &callback_data);
- if (successful && ao2_container_count(successful->c) == ao2_container_count(session->media)) {
+ if (successful && ao2_iterator_count(successful) == ao2_container_count(session->media)) {
/* Nothing experienced a catastrophic failure */
ast_queue_frame(session->channel, &ast_null_frame);
return 0;
/* Now let the handlers add streams of various types, pjmedia will automatically reorder the media streams for us */
successful = ao2_callback_data(session->media, OBJ_MULTIPLE, add_sdp_streams, local, session);
- if (!successful || ao2_container_count(successful->c) != ao2_container_count(session->media)) {
+ if (!successful || ao2_iterator_count(successful) != ao2_container_count(session->media)) {
/* Something experienced a catastrophic failure */
return NULL;
}