[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