}
}
-static void list_running_jobs(STATUS_PKT *sp)
+static void list_running_jobs_plain(STATUS_PKT *sp)
{
int sec, bps;
POOL_MEM msg(PM_MESSAGE);
* List running jobs
*/
Dmsg0(1000, "Begin status jcr loop.\n");
- if (!sp->api) {
- len = Mmsg(msg, _("\nRunning Jobs:\n"));
- sendit(msg.c_str(), len, sp);
- }
+ len = Mmsg(msg, _("\nRunning Jobs:\n"));
+ sendit(msg.c_str(), len, sp);
const char *vss = "";
#ifdef WIN32_VSS
if (g_pVSSClient && g_pVSSClient->IsInitialized()) {
}
endeach_jcr(njcr);
- if (!sp->api) {
- if (!found) {
- len = Mmsg(msg, _("No Jobs running.\n"));
+ if (!found) {
+ len = Mmsg(msg, _("No Jobs running.\n"));
+ sendit(msg.c_str(), len, sp);
+ }
+ sendit(_("====\n"), 5, sp);
+}
+
+static void list_running_jobs_api(STATUS_PKT *sp)
+{
+ int sec, bps;
+ POOL_MEM msg(PM_MESSAGE);
+ char b1[32], b2[32], b3[32];
+ int len;
+ bool found = false;
+ JCR *njcr;
+ char dt[MAX_TIME_LENGTH];
+ /*
+ * List running jobs for Bat/Bweb (simple to parse)
+ */
+ int vss = 0;
+#ifdef WIN32_VSS
+ if (g_pVSSClient && g_pVSSClient->IsInitialized()) {
+ vss = 1;
+ }
+#endif
+ foreach_jcr(njcr) {
+ bstrutime(dt, sizeof(dt), njcr->start_time);
+ if (njcr->JobId == 0) {
+ len = Mmsg(msg, "DirectorConnected=%s\n", dt);
+ } else {
+ len = Mmsg(msg, "JobId=%d\n Job=%s\n",
+ njcr->JobId, njcr->Job);
+ sendit(msg.c_str(), len, sp);
+ len = Mmsg(msg," VSS=%d\n Level=%c\n JobType=%c\n JobStarted=%s\n",
+ vss, njcr->getJobLevel(),
+ njcr->getJobType(), dt);
+ }
+ sendit(msg.c_str(), len, sp);
+ if (njcr->JobId == 0) {
+ continue;
+ }
+ sec = time(NULL) - njcr->start_time;
+ if (sec <= 0) {
+ sec = 1;
+ }
+ bps = (int)(njcr->JobBytes / sec);
+ len = Mmsg(msg, " Files=%s\n Bytes=%s\n Bytes/sec=%s\n Errors=%d\n"
+ " Bwlimit=%d\n",
+ edit_uint64(njcr->JobFiles, b1),
+ edit_uint64(njcr->JobBytes, b2),
+ edit_uint64(bps, b3),
+ njcr->JobErrors, njcr->max_bandwidth);
+ sendit(msg.c_str(), len, sp);
+ len = Mmsg(msg, " FilesExamined=%s\n",
+ edit_uint64(njcr->num_files_examined, b1));
+ sendit(msg.c_str(), len, sp);
+ if (njcr->JobFiles > 0) {
+ njcr->lock();
+ len = Mmsg(msg, " ProcessingFile=%s\n", njcr->last_fname);
+ njcr->unlock();
+ sendit(msg.c_str(), len, sp);
+ }
+
+ found = true;
+ if (njcr->store_bsock) {
+ len = Mmsg(msg, " SDReadSeqNo=%" lld "\n fd=%d\n",
+ njcr->store_bsock->read_seqno, njcr->store_bsock->m_fd);
+ sendit(msg.c_str(), len, sp);
+ } else {
+ len = Mmsg(msg, _(" SDSocket=closed\n"));
sendit(msg.c_str(), len, sp);
}
- sendit(_("====\n"), 5, sp);
}
+ endeach_jcr(njcr);
}
-
+
+static void list_running_jobs(STATUS_PKT *sp)
+{
+ if (sp->api) {
+ list_running_jobs_api(sp);
+ } else {
+ list_running_jobs_plain(sp);
+ }
+}
static void list_terminated_jobs(STATUS_PKT *sp)
{