[Asterisk-code-review] Added creation timestamp for the bridge (asterisk[master])
sungtae kim
asteriskteam at digium.com
Fri Feb 8 15:54:27 CST 2019
sungtae kim has uploaded this change for review. ( https://gerrit.asterisk.org/10986
Change subject: Added creation timestamp for the bridge
......................................................................
Added creation timestamp for the bridge
Added creation timestamp for the bridge. This small feature will
help to checking the bridge's status to figure out which bridge is
in old/zombie or not. Also added detail items for the 'bridge show *'
cli to provide more detail info. And added creation item to the ARI
as well.
Change-Id: I460238c488eca4d216b9176576211cb03286e040
---
M include/asterisk/bridge.h
M main/bridge.c
M main/stasis_bridges.c
M rest-api/api-docs/bridges.json
4 files changed, 33 insertions(+), 6 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/86/10986/1
diff --git a/include/asterisk/bridge.h b/include/asterisk/bridge.h
index e4d11e8..8fe9f0e 100644
--- a/include/asterisk/bridge.h
+++ b/include/asterisk/bridge.h
@@ -329,6 +329,8 @@
unsigned int num_channels;
/*! Number of active channels in the bridge. */
unsigned int num_active;
+ /*! The time of bridge creation */
+ struct timeval creationtime;
/*! The video mode of the bridge */
enum ast_bridge_video_mode_type video_mode;
};
@@ -390,6 +392,8 @@
AST_STRING_FIELD(uniqueid);
);
+ /*! The time of bridge creation */
+ struct timeval creationtime;
/*! Type mapping used for media routing */
struct ast_vector_int media_types;
/*! Current bridge snapshot */
diff --git a/main/bridge.c b/main/bridge.c
index 1bee2e6..5752001 100644
--- a/main/bridge.c
+++ b/main/bridge.c
@@ -822,6 +822,8 @@
}
}
+ self->creationtime = ast_tvnow();
+
return self;
}
@@ -5051,8 +5053,8 @@
static char *handle_bridge_show_all(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
-#define FORMAT_HDR "%-36s %5s %-15s %s\n"
-#define FORMAT_ROW "%-36s %5u %-15s %s\n"
+#define FORMAT_HDR "%-36s %5s %-15s %-15s %s\n"
+#define FORMAT_ROW "%-36s %5u %-15s %-15s %s\n"
struct ao2_iterator iter;
struct ast_bridge *bridge;
@@ -5068,18 +5070,22 @@
return NULL;
}
- ast_cli(a->fd, FORMAT_HDR, "Bridge-ID", "Chans", "Type", "Technology");
+ ast_cli(a->fd, FORMAT_HDR, "Bridge-ID", "Chans", "Type", "Technology", "Duration");
iter = ao2_iterator_init(bridges, 0);
for (; (bridge = ao2_iterator_next(&iter)); ao2_ref(bridge, -1)) {
struct ast_bridge_snapshot *snapshot = ast_bridge_get_snapshot(bridge);
+ char print_time[32];
+
+ ast_format_duration_hh_mm_ss(ast_tvnow().tv_sec - snapshot->creationtime.tv_sec, print_time, sizeof(print_time));
if (snapshot) {
ast_cli(a->fd, FORMAT_ROW,
snapshot->uniqueid,
snapshot->num_channels,
S_OR(snapshot->subclass, "<unknown>"),
- S_OR(snapshot->technology, "<unknown>"));
+ S_OR(snapshot->technology, "<unknown>"),
+ print_time);
ao2_ref(snapshot, -1);
}
}
@@ -5112,6 +5118,7 @@
static char *handle_bridge_show_specific(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct ast_bridge_snapshot *snapshot;
+ char print_time[32];
switch (cmd) {
case CLI_INIT:
@@ -5136,10 +5143,19 @@
ast_cli(a->fd, "Bridge '%s' not found\n", a->argv[2]);
return CLI_SUCCESS;
}
+
+ ast_format_duration_hh_mm_ss(ast_tvnow().tv_sec - snapshot->creationtime.tv_sec, print_time, sizeof(print_time));
+
ast_cli(a->fd, "Id: %s\n", snapshot->uniqueid);
ast_cli(a->fd, "Type: %s\n", S_OR(snapshot->subclass, "<unknown>"));
ast_cli(a->fd, "Technology: %s\n", S_OR(snapshot->technology, "<unknown>"));
+ ast_cli(a->fd, "Subclass: %s\n", snapshot->subclass);
+ ast_cli(a->fd, "Creator: %s\n", snapshot->creator);
+ ast_cli(a->fd, "Name: %s\n", snapshot->name);
+ ast_cli(a->fd, "Video-Source-Id: %s\n", snapshot->video_source_id);
ast_cli(a->fd, "Num-Channels: %u\n", snapshot->num_channels);
+ ast_cli(a->fd, "Num-Active: %u\n", snapshot->num_active);
+ ast_cli(a->fd, "Duration: %s\n", print_time);
ao2_callback(snapshot->channels, OBJ_NODATA, bridge_show_specific_print_channel, a);
ao2_ref(snapshot, -1);
diff --git a/main/stasis_bridges.c b/main/stasis_bridges.c
index bed28ba..cfdf117 100644
--- a/main/stasis_bridges.c
+++ b/main/stasis_bridges.c
@@ -246,6 +246,7 @@
snapshot->capabilities = bridge->technology->capabilities;
snapshot->num_channels = bridge->num_channels;
snapshot->num_active = bridge->num_active;
+ snapshot->creationtime = bridge->creationtime;
snapshot->video_mode = bridge->softmix.video_mode.mode;
if (snapshot->video_mode == AST_BRIDGE_VIDEO_MODE_SINGLE_SRC
&& bridge->softmix.video_mode.mode_data.single_src_data.chan_vsrc) {
@@ -679,7 +680,7 @@
return NULL;
}
- json_bridge = ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: s, s: o, s: s}",
+ json_bridge = ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: s, s: o, s: o, s: s}",
"id", snapshot->uniqueid,
"technology", snapshot->technology,
"bridge_type", capability2str(snapshot->capabilities),
@@ -687,6 +688,7 @@
"creator", snapshot->creator,
"name", snapshot->name,
"channels", json_channels,
+ "creationtime", ast_json_timeval(snapshot->creationtime, NULL),
"video_mode", ast_bridge_video_mode_to_string(snapshot->video_mode));
if (!json_bridge) {
return NULL;
diff --git a/rest-api/api-docs/bridges.json b/rest-api/api-docs/bridges.json
index 04416c1..2368a98 100644
--- a/rest-api/api-docs/bridges.json
+++ b/rest-api/api-docs/bridges.json
@@ -753,7 +753,12 @@
"type": "string",
"description": "The ID of the channel that is the source of video in this bridge, if one exists.",
"required": false
- }
+ },
+ "creationtime": {
+ "required": true,
+ "type": "Date",
+ "description": "Timestamp when bridge was created"
+ },
}
}
}
--
To view, visit https://gerrit.asterisk.org/10986
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I460238c488eca4d216b9176576211cb03286e040
Gerrit-Change-Number: 10986
Gerrit-PatchSet: 1
Gerrit-Owner: sungtae kim <pchero21 at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20190208/885683e9/attachment-0001.html>
More information about the asterisk-code-review
mailing list