[Asterisk-code-review] core: Show streams in "core show channel". (asterisk[master])
Joshua Colp
asteriskteam at digium.com
Wed Feb 22 08:34:04 CST 2017
Joshua Colp has uploaded a new change for review. ( https://gerrit.asterisk.org/5059 )
Change subject: core: Show streams in "core show channel".
......................................................................
core: Show streams in "core show channel".
The "core show channel" CLI command will now output the streams
present on the channel with their details.
ASTERISK-26811
Change-Id: I9c95b57aa09415005f0677a1949a0feb07e4987a
---
M include/asterisk/stream.h
M main/cli.c
M main/stream.c
3 files changed, 48 insertions(+), 0 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/59/5059/1
diff --git a/include/asterisk/stream.h b/include/asterisk/stream.h
index edb00b9..48ee883 100644
--- a/include/asterisk/stream.h
+++ b/include/asterisk/stream.h
@@ -191,6 +191,17 @@
void ast_stream_set_state(struct ast_stream *stream, enum ast_stream_state state);
/*!
+ * \brief Convert the state of a stream into a string
+ *
+ * \param state The stream state
+ *
+ * \return The state of the stream in string format
+ *
+ * \since 15
+ */
+const char *ast_stream_state2str(enum ast_stream_state state);
+
+/*!
* \brief Get the position of the stream in the topology
*
* \param stream The media stream
diff --git a/main/cli.c b/main/cli.c
index ccdbb97..06f2d55 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -61,6 +61,7 @@
#include "asterisk/stasis_channels.h"
#include "asterisk/stasis_bridges.h"
#include "asterisk/vector.h"
+#include "asterisk/stream.h"
/*!
* \brief List of restrictions per user.
@@ -1542,6 +1543,7 @@
struct ast_bridge *bridge;
ast_callid callid;
char callid_buf[32];
+ int stream_num;
switch (cmd) {
case CLI_INIT:
@@ -1668,6 +1670,7 @@
S_OR(ast_channel_data(chan), "(Empty)"),
S_OR(callid_buf, "(None)")
);
+
ast_str_append(&output, 0, " Variables:\n");
AST_LIST_TRAVERSE(ast_channel_varshead(chan), var, entries) {
@@ -1679,6 +1682,22 @@
ast_str_append(&output, 0, " CDR Variables:\n%s\n", ast_str_buffer(obuf));
}
+ ast_str_append(&output, 0, " -- Streams --\n");
+ for (stream_num = 0; stream_num < ast_stream_topology_get_count(ast_channel_get_stream_topology(chan)); stream_num++) {
+ struct ast_stream *stream = ast_stream_topology_get_stream(ast_channel_get_stream_topology(chan), stream_num);
+
+ ast_str_append(&output, 0,
+ "Name: %s\n"
+ " Type: %s\n"
+ " State: %s\n"
+ " Formats: %s\n",
+ ast_stream_get_name(stream),
+ ast_codec_media_type2str(ast_stream_get_type(stream)),
+ ast_stream_state2str(ast_stream_get_state(stream)),
+ ast_format_cap_get_names(ast_stream_get_formats(stream), &codec_buf)
+ );
+ }
+
ast_channel_unlock(chan);
ast_cli(a->fd, "%s", ast_str_buffer(output));
diff --git a/main/stream.c b/main/stream.c
index aacd33f..8bee2fd 100644
--- a/main/stream.c
+++ b/main/stream.c
@@ -168,6 +168,24 @@
stream->state = state;
}
+const char *ast_stream_state2str(enum ast_stream_state state)
+{
+ switch (state) {
+ case AST_STREAM_STATE_REMOVED:
+ return "removed";
+ case AST_STREAM_STATE_SENDRECV:
+ return "sendrecv";
+ case AST_STREAM_STATE_SENDONLY:
+ return "sendonly";
+ case AST_STREAM_STATE_RECVONLY:
+ return "recvonly";
+ case AST_STREAM_STATE_INACTIVE:
+ return "inactive";
+ default:
+ return "<unknown>";
+ }
+}
+
int ast_stream_get_position(const struct ast_stream *stream)
{
ast_assert(stream != NULL);
--
To view, visit https://gerrit.asterisk.org/5059
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9c95b57aa09415005f0677a1949a0feb07e4987a
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Joshua Colp <jcolp at digium.com>
More information about the asterisk-code-review
mailing list