[Asterisk-code-review] app_queue: Add LoginTime field for member in a queue. (asterisk[16])

George Joseph asteriskteam at digium.com
Mon Oct 25 11:58:37 CDT 2021


George Joseph has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/16583 )

Change subject: app_queue: Add LoginTime field for member in a queue.
......................................................................

app_queue: Add LoginTime field for member in a queue.

Add a time_t logintime to storage a time when a member is added into a
queue.

Also, includes show this time (in seconds) using a 'queue show' command
and the field LoginTime for response for AMI events.

ASTERISK-18069 #close

Change-Id: Ied6c3a300f78d78eebedeb3e16a1520fc3fff190
---
M apps/app_queue.c
A doc/CHANGES-staging/app_queue_logintime.txt
2 files changed, 22 insertions(+), 2 deletions(-)

Approvals:
  George Joseph: Looks good to me, approved; Approved for Submit



diff --git a/apps/app_queue.c b/apps/app_queue.c
index a4f6dce..1b05366 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -1080,6 +1080,9 @@
 				<parameter name="LastPause">
 					<para>The time when started last paused the queue member.</para>
 				</parameter>
+				<parameter name="LoginTime">
+					<para>The time this member logged in to the queue, expressed in seconds since 00:00, Jan 1, 1970 UTC.</para>
+				</parameter>
 				<parameter name="InCall">
 					<para>Set to 1 if member is in call. Set to 0 after LastCall time is updated.</para>
 					<enumlist>
@@ -1618,6 +1621,7 @@
 	time_t starttime;                    /*!< The time at which the member answered the current caller. */
 	time_t lastcall;                     /*!< When last successful call was hungup */
 	time_t lastpause;                    /*!< When started the last pause */
+	time_t logintime;                    /*!< The time when started the login */
 	struct call_queue *lastqueue;        /*!< Last queue we received a call */
 	unsigned int dead:1;                 /*!< Used to detect members deleted in realtime */
 	unsigned int delme:1;                /*!< Flag to delete entry on reload */
@@ -2266,7 +2270,7 @@
 
 static struct ast_json *queue_member_blob_create(struct call_queue *q, struct member *mem)
 {
-	return ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: i, s: i, s: i, s: i, s: i, s: i, s: i, s: s, s: i, s: i}",
+	return ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: i, s: i, s: i, s: i, s: i, s: i, s: i, s: i, s: s, s: i, s: i}",
 		"Queue", q->name,
 		"MemberName", mem->membername,
 		"Interface", mem->interface,
@@ -2276,6 +2280,7 @@
 		"CallsTaken", mem->calls,
 		"LastCall", (int)mem->lastcall,
 		"LastPause", (int)mem->lastpause,
+		"LoginTime", (int)mem->logintime,
 		"InCall", mem->starttime ? 1 : 0,
 		"Status", mem->status,
 		"Paused", mem->paused,
@@ -2749,6 +2754,7 @@
 		if (paused) {
 			time(&cur->lastpause); /* Update time of last pause */
 		}
+		time(&cur->logintime);
 		ast_copy_string(cur->interface, interface, sizeof(cur->interface));
 		if (!ast_strlen_zero(state_interface)) {
 			ast_copy_string(cur->state_interface, state_interface, sizeof(cur->state_interface));
@@ -9779,6 +9785,10 @@
 			} else {
 				ast_str_append(&out, 0, " has taken no calls yet");
 			}
+			ast_str_append(&out, 0, " %s(login was %ld secs ago)%s",
+				ast_term_color(COLOR_BROWN, COLOR_BLACK),
+				(long) (now - mem->logintime),
+				ast_term_reset());
 			do_print(s, fd, ast_str_buffer(out));
 			ao2_ref(mem, -1);
 		}
@@ -10221,6 +10231,7 @@
 						"CallsTaken: %d\r\n"
 						"LastCall: %d\r\n"
 						"LastPause: %d\r\n"
+						"LoginTime: %d\r\n"
 						"InCall: %d\r\n"
 						"Status: %d\r\n"
 						"Paused: %d\r\n"
@@ -10229,7 +10240,7 @@
 						"%s"
 						"\r\n",
 						q->name, mem->membername, mem->interface, mem->state_interface, mem->dynamic ? "dynamic" : "static",
-						mem->penalty, mem->calls, (int)mem->lastcall, (int)mem->lastpause, mem->starttime ? 1 : 0, mem->status,
+						mem->penalty, mem->calls, (int)mem->lastcall, (int)mem->lastpause, (int)mem->logintime, mem->starttime ? 1 : 0, mem->status,
 						mem->paused, mem->reason_paused, mem->wrapuptime, idText);
 					++q_items;
 				}
diff --git a/doc/CHANGES-staging/app_queue_logintime.txt b/doc/CHANGES-staging/app_queue_logintime.txt
new file mode 100644
index 0000000..5b0eea4
--- /dev/null
+++ b/doc/CHANGES-staging/app_queue_logintime.txt
@@ -0,0 +1,9 @@
+Subject: app_queue
+
+Add field to save the time value when a member enter a queue.
+Shows this time in seconds using 'queue show' command and the
+field LoginTime for responses for AMI the events.
+
+The output for the CLI command `queue show` is changed by added a
+extra data field for the information of the time login time for each
+member.

-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/16583
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 16
Gerrit-Change-Id: Ied6c3a300f78d78eebedeb3e16a1520fc3fff190
Gerrit-Change-Number: 16583
Gerrit-PatchSet: 2
Gerrit-Owner: Rodrigo Ramirez Norambuena <a at rodrigoramirez.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20211025/fc6dbe64/attachment-0001.html>


More information about the asterisk-code-review mailing list