+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;
+ 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);
+<<<<<<< HEAD
+ 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);
+=======
+ len = Mmsg(msg, " Files=%s\n Bytes=%s\n Bytes/sec=%s\n Errors=%d\n",
+ edit_uint64(njcr->JobFiles, b1),
+ edit_uint64(njcr->JobBytes, b2),
+ edit_uint64(bps, b3),
+ njcr->JobErrors);
+>>>>>>> caaa5db... Implement RestoreObject for sqlite + cleanups
+ sendit(msg.c_str(), len, sp);
+ len = Mmsg(msg, " Files Examined=%s\n",
+ edit_uint64(njcr->num_files_examined, b1));
+ sendit(msg.c_str(), len, sp);
+ if (njcr->JobFiles > 0) {
+ njcr->lock();
+ len = Mmsg(msg, " Processing file=%s\n", njcr->last_fname);
+ njcr->unlock();
+ sendit(msg.c_str(), len, sp);
+ }
+
+ 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);
+ }
+ }
+ endeach_jcr(njcr);