Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ed58fe3c6 | ||
|
|
058c79570b | ||
|
|
ec8fbcdf38 | ||
|
|
76673295bf | ||
|
|
084401b9c3 | ||
|
|
49038b10f7 | ||
|
|
45ea26810a | ||
|
|
18c8b2d803 | ||
|
|
f4a7482b3b | ||
|
|
32dff128f4 | ||
|
|
a00b2d6574 | ||
|
|
10c6e7d522 | ||
|
|
df6a256d51 | ||
|
|
fbdb74ee68 | ||
|
|
9ad7250da0 |
@@ -476,7 +476,10 @@ class Reader {
|
|||||||
this.dualPageMode = settings.dualPageMode;
|
this.dualPageMode = settings.dualPageMode;
|
||||||
this.userWallpapers = settings.userWallpapers;
|
this.userWallpapers = settings.userWallpapers;
|
||||||
this.bucEnabled = settings.bucEnabled;
|
this.bucEnabled = settings.bucEnabled;
|
||||||
|
this.bucSizeDiff = settings.bucSizeDiff;
|
||||||
this.bucSetOnNew = settings.bucSetOnNew;
|
this.bucSetOnNew = settings.bucSetOnNew;
|
||||||
|
this.bucCancelEnabled = settings.bucCancelEnabled;
|
||||||
|
this.bucCancelDays = settings.bucCancelDays;
|
||||||
|
|
||||||
this.readerActionByKeyCode = utils.userHotKeysObjectSwap(settings.userHotKeys);
|
this.readerActionByKeyCode = utils.userHotKeysObjectSwap(settings.userHotKeys);
|
||||||
this.$root.readerActionByKeyEvent = (event) => {
|
this.$root.readerActionByKeyEvent = (event) => {
|
||||||
@@ -604,13 +607,50 @@ class Reader {
|
|||||||
await utils.sleep(1000);//чтобы не ддосить сервер
|
await utils.sleep(1000);//чтобы не ддосить сервер
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const checkSetTime = {};
|
||||||
//проставим новые размеры у книг
|
//проставим новые размеры у книг
|
||||||
for (const book of sorted) {
|
for (const book of sorted) {
|
||||||
|
if (book.deleted)
|
||||||
|
continue;
|
||||||
|
|
||||||
//размер 0 считаем отсутствующим
|
//размер 0 считаем отсутствующим
|
||||||
if (book.url && bucSize[book.url] && bucSize[book.url] !== book.bucSize) {
|
if (book.url && bucSize[book.url] && bucSize[book.url] !== book.bucSize) {
|
||||||
book.bucSize = bucSize[book.url];
|
book.bucSize = bucSize[book.url];
|
||||||
await bookManager.recentSetItem(book);
|
await bookManager.recentSetItem(book);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//подготовка к следующему шагу, ищем книгу по url с максимальной датой установки checkBucTime/loadTime
|
||||||
|
//от этой даты будем потом отсчитывать bucCancelDays
|
||||||
|
if (updateUrls.has(book.url)) {
|
||||||
|
let rec = checkSetTime[book.url] || {time: 0, loadTime: 0};
|
||||||
|
|
||||||
|
const time = (book.checkBucTime ? book.checkBucTime : (rec.loadTime || 0));
|
||||||
|
if (time > rec.time || (time == rec.time && (book.loadTime > rec.loadTime)))
|
||||||
|
rec = {time, loadTime: book.loadTime, key: book.key};
|
||||||
|
|
||||||
|
checkSetTime[book.url] = rec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//bucCancelEnabled и bucCancelDays
|
||||||
|
//снимем флаг checkBuc у необновлявшихся bucCancelDays
|
||||||
|
if (this.bucCancelEnabled) {
|
||||||
|
for (const rec of Object.values(checkSetTime)) {
|
||||||
|
if (rec.time && Date.now() - rec.time > this.bucCancelDays*24*3600*1000) {
|
||||||
|
const book = await bookManager.getRecentBook({key: rec.key});
|
||||||
|
const needBookUpdate =
|
||||||
|
book.checkBuc
|
||||||
|
&& book.bucSize
|
||||||
|
&& utils.hasProp(book, 'downloadSize')
|
||||||
|
&& book.bucSize !== book.downloadSize
|
||||||
|
&& (book.bucSize - book.downloadSize >= this.bucSizeDiff)
|
||||||
|
;
|
||||||
|
|
||||||
|
if (book && !needBookUpdate) {
|
||||||
|
await bookManager.setCheckBuc(book, undefined);//!!!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.$refs.recentBooksPage.updateTableData();
|
await this.$refs.recentBooksPage.updateTableData();
|
||||||
@@ -1251,6 +1291,7 @@ class Reader {
|
|||||||
|
|
||||||
this.checkBookPosPercent();
|
this.checkBookPosPercent();
|
||||||
this.activateClickMapPage();//no await
|
this.activateClickMapPage();//no await
|
||||||
|
this.$refs.recentBooksPage.updateTableData();//no await
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -147,8 +147,8 @@
|
|||||||
{{ item.desc.title }}
|
{{ item.desc.title }}
|
||||||
</div>
|
</div>
|
||||||
<div v-show="bothBucEnabled && item.needBookUpdate" style="font-size: 75%; color: blue;">
|
<div v-show="bothBucEnabled && item.needBookUpdate" style="font-size: 75%; color: blue;">
|
||||||
Размер: {{ item.downloadSize }} → {{ item.bucSize }},
|
Размер: {{ item.bucSize - item.downloadSize > 0 ? '+' : '' }}{{ item.bucSize - item.downloadSize }}
|
||||||
{{ item.bucSize - item.downloadSize > 0 ? '+' : '' }}{{ item.bucSize - item.downloadSize }}
|
({{ item.downloadSize }} → {{ item.bucSize }})
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -231,7 +231,12 @@
|
|||||||
@update:model-value="checkBucChange(item)"
|
@update:model-value="checkBucChange(item)"
|
||||||
>
|
>
|
||||||
<q-tooltip :delay="1500" anchor="bottom middle" content-style="font-size: 80%">
|
<q-tooltip :delay="1500" anchor="bottom middle" content-style="font-size: 80%">
|
||||||
Проверять обновления
|
<div v-if="item.checkBuc === undefined">
|
||||||
|
Проверка обновлений отключена автоматически<br>т.к. книга не обновлялась {{ bucCancelDays }} дней
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
{{ (item.checkBuc ? 'Проверка обновлений книги включена' : 'Проверка обновлений книги отключена') }}
|
||||||
|
</div>
|
||||||
</q-tooltip>
|
</q-tooltip>
|
||||||
</q-checkbox>
|
</q-checkbox>
|
||||||
</div>
|
</div>
|
||||||
@@ -289,6 +294,7 @@ class RecentBooksPage {
|
|||||||
bucEnabled = false;
|
bucEnabled = false;
|
||||||
bucSizeDiff = 0;
|
bucSizeDiff = 0;
|
||||||
bucSetOnNew = false;
|
bucSetOnNew = false;
|
||||||
|
bucCancelDays = 0;
|
||||||
needBookUpdateCount = 0;
|
needBookUpdateCount = 0;
|
||||||
|
|
||||||
showArchive = false;
|
showArchive = false;
|
||||||
@@ -332,6 +338,7 @@ class RecentBooksPage {
|
|||||||
this.bucEnabled = settings.bucEnabled;
|
this.bucEnabled = settings.bucEnabled;
|
||||||
this.bucSizeDiff = settings.bucSizeDiff;
|
this.bucSizeDiff = settings.bucSizeDiff;
|
||||||
this.bucSetOnNew = settings.bucSetOnNew;
|
this.bucSetOnNew = settings.bucSetOnNew;
|
||||||
|
this.bucCancelDays = settings.bucCancelDays;
|
||||||
}
|
}
|
||||||
|
|
||||||
get settings() {
|
get settings() {
|
||||||
@@ -403,8 +410,8 @@ class RecentBooksPage {
|
|||||||
inGroup: false,
|
inGroup: false,
|
||||||
coverPageUrl: book.coverPageUrl,
|
coverPageUrl: book.coverPageUrl,
|
||||||
|
|
||||||
showCheckBuc: !this.showArchive && utils.hasProp(book, 'downloadSize'),
|
showCheckBuc: !this.showArchive && utils.hasProp(book, 'downloadSize') && book.url.indexOf('disk://') !== 0,
|
||||||
checkBuc: !!book.checkBuc,
|
checkBuc: book.checkBuc,
|
||||||
needBookUpdate: (
|
needBookUpdate: (
|
||||||
!this.showArchive
|
!this.showArchive
|
||||||
&& book.checkBuc
|
&& book.checkBuc
|
||||||
|
|||||||
@@ -27,17 +27,7 @@
|
|||||||
|
|
||||||
<div v-show="configBucEnabled && bucEnabled" class="item row">
|
<div v-show="configBucEnabled && bucEnabled" class="item row">
|
||||||
<div class="label-6"></div>
|
<div class="label-6"></div>
|
||||||
<q-checkbox size="xs" v-model="bucSetOnNew">
|
<div class="col-5 column justify-center items-end q-pr-xs">Разница размеров</div>
|
||||||
Автопроверка для вновь загружаемых
|
|
||||||
<q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
|
|
||||||
Автоматически устанавливать флаг проверки<br>
|
|
||||||
обновлений для всех вновь загружаемых книг
|
|
||||||
</q-tooltip>
|
|
||||||
</q-checkbox>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-show="configBucEnabled && bucEnabled" class="item row">
|
|
||||||
<div class="label-6">Разница размеров</div>
|
|
||||||
<div class="col row">
|
<div class="col row">
|
||||||
<NumInput class="col-left" v-model="bucSizeDiff" />
|
<NumInput class="col-left" v-model="bucSizeDiff" />
|
||||||
|
|
||||||
@@ -48,3 +38,39 @@
|
|||||||
</q-tooltip>
|
</q-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div v-show="configBucEnabled && bucEnabled" class="item row">
|
||||||
|
<div class="label-6"></div>
|
||||||
|
<q-checkbox size="xs" v-model="bucSetOnNew">
|
||||||
|
Автопроверка для вновь загружаемых
|
||||||
|
<q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
|
||||||
|
Автоматически устанавливать флаг проверки<br>
|
||||||
|
обновлений для всех вновь загружаемых книг
|
||||||
|
</q-tooltip>
|
||||||
|
</q-checkbox>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-show="configBucEnabled && bucEnabled" class="item row">
|
||||||
|
<div class="label-6"></div>
|
||||||
|
<q-checkbox size="xs" v-model="bucCancelEnabled">
|
||||||
|
Отменять проверку через {{ bucCancelDays }} дней{{ (bucCancelEnabled ? ':' : '') }}
|
||||||
|
<q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
|
||||||
|
Снимать флаг проверки с книги, если не было<br>
|
||||||
|
обновлений в течение {{ bucCancelDays }} дней
|
||||||
|
</q-tooltip>
|
||||||
|
</q-checkbox>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-show="configBucEnabled && bucEnabled && bucCancelEnabled" class="item row">
|
||||||
|
<div class="label-6"></div>
|
||||||
|
<div class="col-5"></div>
|
||||||
|
<div class="col row">
|
||||||
|
<NumInput class="col-left" v-model="bucCancelDays" :min="1" :max="10000"/>
|
||||||
|
|
||||||
|
<q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
|
||||||
|
Снимать флаг проверки с книги, если не было<br>
|
||||||
|
обновлений в течение {{ bucCancelDays }} дней
|
||||||
|
</q-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -487,7 +487,7 @@ class BookManager {
|
|||||||
await this.recentSetItem(item);
|
await this.recentSetItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
async setCheckBuc(value, checkBuc = true) {
|
async setCheckBuc(value, checkBuc) {
|
||||||
const item = this.recent[value.key];
|
const item = this.recent[value.key];
|
||||||
|
|
||||||
const updateItems = [];
|
const updateItems = [];
|
||||||
@@ -495,7 +495,7 @@ class BookManager {
|
|||||||
if (item.sameBookKey !== undefined) {
|
if (item.sameBookKey !== undefined) {
|
||||||
const sorted = this.getSortedRecent();
|
const sorted = this.getSortedRecent();
|
||||||
for (const book of sorted) {
|
for (const book of sorted) {
|
||||||
if (book.sameBookKey === item.sameBookKey)
|
if (!book.deleted && book.sameBookKey === item.sameBookKey)
|
||||||
updateItems.push(book);
|
updateItems.push(book);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -503,8 +503,11 @@ class BookManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const now = Date.now();
|
||||||
for (const book of updateItems) {
|
for (const book of updateItems) {
|
||||||
book.checkBuc = checkBuc;
|
book.checkBuc = checkBuc;
|
||||||
|
if (checkBuc)
|
||||||
|
book.checkBucTime = now;
|
||||||
await this.recentSetItem(book);
|
await this.recentSetItem(book);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ export const versionHistory = [
|
|||||||
<li>запущен сервер проверки обновлений книг:</li>
|
<li>запущен сервер проверки обновлений книг:</li>
|
||||||
<ul>
|
<ul>
|
||||||
<li>проверка обновления той или иной книги настраивается в списке загруженных (чекбокс)</li>
|
<li>проверка обновления той или иной книги настраивается в списке загруженных (чекбокс)</li>
|
||||||
<li>в настройках можно указать разницу размеров, при которой необходимо делать уведомление</li>
|
<li>для того, чтобы чекбокс появился у ранее загруженной, необходимо принудительно обновить книгу</li>
|
||||||
|
<li>в настройках можно указать разницу размеров, при которой требуется делать уведомление</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ const settingDefaults = {
|
|||||||
|
|
||||||
fontShifts: {},
|
fontShifts: {},
|
||||||
showToolButton: {},
|
showToolButton: {},
|
||||||
toolBarHideOnScroll: true,
|
toolBarHideOnScroll: false,
|
||||||
userHotKeys: {},
|
userHotKeys: {},
|
||||||
userWallpapers: [],
|
userWallpapers: [],
|
||||||
|
|
||||||
@@ -196,6 +196,8 @@ const settingDefaults = {
|
|||||||
bucEnabled: true, // общее включение/выключение проверки обновлений
|
bucEnabled: true, // общее включение/выключение проверки обновлений
|
||||||
bucSizeDiff: 1, // разница в размерах файла, при которой показывать наличие обновления
|
bucSizeDiff: 1, // разница в размерах файла, при которой показывать наличие обновления
|
||||||
bucSetOnNew: true, // автоматически включать проверку обновлений для вновь загружаемых файлов
|
bucSetOnNew: true, // автоматически включать проверку обновлений для вновь загружаемых файлов
|
||||||
|
bucCancelEnabled: true, // вкл/выкл отмену проверки книг через bucCancelDays
|
||||||
|
bucCancelDays: 90, // количество дней, через которое отменяется проверка книги, при условии отсутствия обновлений за это время
|
||||||
|
|
||||||
//для SettingsPage
|
//для SettingsPage
|
||||||
needUpdateSettingsView: 0,
|
needUpdateSettingsView: 0,
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ class BUCClient {
|
|||||||
this.periodicSendBookUrls();//no await
|
this.periodicSendBookUrls();//no await
|
||||||
this.periodicSync();//no await
|
this.periodicSync();//no await
|
||||||
|
|
||||||
log(`BUC Client started`);
|
log(`BUC Client Worker started`);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log(LM_FATAL, e.stack);
|
log(LM_FATAL, e.stack);
|
||||||
ayncExit.exit(1);
|
ayncExit.exit(1);
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ class BUCServer {
|
|||||||
this.periodicCheckWait = 500;//пауза, если нечего делать
|
this.periodicCheckWait = 500;//пауза, если нечего делать
|
||||||
|
|
||||||
this.cleanQueryInterval = 300*dayMs;//интервал очистки устаревших
|
this.cleanQueryInterval = 300*dayMs;//интервал очистки устаревших
|
||||||
this.oldQueryInterval = 30*dayMs;//интервал устаревания запроса на обновление
|
this.oldQueryInterval = 14*dayMs;//интервал устаревания запроса на обновление
|
||||||
this.checkingInterval = 3*hourMs;//интервал проверки обновления одного и того же файла
|
this.checkingInterval = 5*hourMs;//интервал проверки обновления одного и того же файла
|
||||||
this.sameHostCheckInterval = 1000;//интервал проверки файла на том же сайте, не менее
|
this.sameHostCheckInterval = 1000;//интервал проверки файла на том же сайте, не менее
|
||||||
} else {
|
} else {
|
||||||
this.maxCheckQueueLength = 10;//максимальная длина checkQueue
|
this.maxCheckQueueLength = 10;//максимальная длина checkQueue
|
||||||
@@ -134,6 +134,7 @@ class BUCServer {
|
|||||||
id,
|
id,
|
||||||
queryTime: now,
|
queryTime: now,
|
||||||
checkTime: 0, // 0 - never checked
|
checkTime: 0, // 0 - never checked
|
||||||
|
etag: '',
|
||||||
modTime: '',
|
modTime: '',
|
||||||
size: 0,
|
size: 0,
|
||||||
checkSum: '', //sha256
|
checkSum: '', //sha256
|
||||||
@@ -184,7 +185,7 @@ class BUCServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
rows = await db.select({table: 'buc', count: true});
|
rows = await db.select({table: 'buc', count: true});
|
||||||
log(LM_WARN, `'buc' table length: ${rows[0].count}`);
|
log(LM_WARN, `'buc' table size: ${rows[0].count}`);
|
||||||
|
|
||||||
now = Date.now();
|
now = Date.now();
|
||||||
//выборка кандидатов
|
//выборка кандидатов
|
||||||
@@ -199,25 +200,31 @@ class BUCServer {
|
|||||||
`
|
`
|
||||||
});
|
});
|
||||||
|
|
||||||
//console.log(rows);
|
//формирование checkQueue
|
||||||
|
|
||||||
if (rows.length) {
|
if (rows.length) {
|
||||||
const ids = [];
|
const ids = [];
|
||||||
|
const rowsToPush = [];
|
||||||
|
|
||||||
|
//сначала выберем сколько надо
|
||||||
for (const row of rows) {
|
for (const row of rows) {
|
||||||
if (this.checkQueue.length >= this.maxCheckQueueLength)
|
if (this.checkQueue.length + rowsToPush.length >= this.maxCheckQueueLength)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
rowsToPush.push(row);
|
||||||
ids.push(row.id);
|
ids.push(row.id);
|
||||||
this.checkQueue.push(row);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//установим у них флаг "в обработке"
|
||||||
await db.update({
|
await db.update({
|
||||||
table: 'buc',
|
table: 'buc',
|
||||||
mod: `(r) => r.state = 1`,
|
mod: `(r) => r.state = 1`,
|
||||||
where: `@@id(${db.esc(ids)})`
|
where: `@@id(${db.esc(ids)})`
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//пушим в очередь, после этого их обработает periodicCheck
|
||||||
|
for (const row of rowsToPush)
|
||||||
|
this.checkQueue.push(row);
|
||||||
|
|
||||||
log(LM_WARN, `checkQueue: added ${ids.length} recs, total ${this.checkQueue.length}`);
|
log(LM_WARN, `checkQueue: added ${ids.length} recs, total ${this.checkQueue.length}`);
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@@ -249,13 +256,21 @@ class BUCServer {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
let unchanged = true;
|
let unchanged = true;
|
||||||
let size = 0;
|
|
||||||
let hash = '';
|
let hash = '';
|
||||||
|
|
||||||
const headers = await this.down.head(row.id);
|
const headers = await this.down.head(row.id);
|
||||||
const modTime = headers['last-modified']
|
|
||||||
|
|
||||||
if (!modTime || !row.modTime || (modTime !== row.modTime)) {
|
const etag = headers['etag'] || '';
|
||||||
|
const modTime = headers['last-modified'] || '';
|
||||||
|
let size = parseInt(headers['content-length'], 10) || 0;
|
||||||
|
|
||||||
|
//log(row.id);
|
||||||
|
//log(`etag: ${etag}, modTime: ${modTime}, size: ${size}`)
|
||||||
|
|
||||||
|
if ((!etag || !row.etag || (etag !== row.etag))
|
||||||
|
&& (!modTime || !row.modTime || (modTime !== row.modTime))
|
||||||
|
&& (!size || !row.size || (size !== row.size))
|
||||||
|
) {
|
||||||
const downdata = await this.down.load(row.id);
|
const downdata = await this.down.load(row.id);
|
||||||
|
|
||||||
size = downdata.length;
|
size = downdata.length;
|
||||||
@@ -267,6 +282,7 @@ class BUCServer {
|
|||||||
table: 'buc',
|
table: 'buc',
|
||||||
mod: `(r) => {
|
mod: `(r) => {
|
||||||
r.checkTime = ${db.esc(Date.now())};
|
r.checkTime = ${db.esc(Date.now())};
|
||||||
|
r.etag = ${(unchanged ? 'r.etag' : db.esc(etag))};
|
||||||
r.modTime = ${(unchanged ? 'r.modTime' : db.esc(modTime))};
|
r.modTime = ${(unchanged ? 'r.modTime' : db.esc(modTime))};
|
||||||
r.size = ${(unchanged ? 'r.size' : db.esc(size))};
|
r.size = ${(unchanged ? 'r.size' : db.esc(size))};
|
||||||
r.checkSum = ${(unchanged ? 'r.checkSum' : db.esc(hash))};
|
r.checkSum = ${(unchanged ? 'r.checkSum' : db.esc(hash))};
|
||||||
@@ -291,6 +307,8 @@ class BUCServer {
|
|||||||
}`,
|
}`,
|
||||||
where: `@@id(${db.esc(row.id)})`
|
where: `@@id(${db.esc(row.id)})`
|
||||||
});
|
});
|
||||||
|
|
||||||
|
log(LM_ERR, `error ${row.id} > ${e.stack ? e.stack : e.message}`);
|
||||||
} finally {
|
} finally {
|
||||||
(async() => {
|
(async() => {
|
||||||
await utils.sleep(this.sameHostCheckInterval);
|
await utils.sleep(this.sameHostCheckInterval);
|
||||||
@@ -319,9 +337,9 @@ class BUCServer {
|
|||||||
for (let i = 0; i < 10; i++)
|
for (let i = 0; i < 10; i++)
|
||||||
this.periodicCheck();//no await
|
this.periodicCheck();//no await
|
||||||
|
|
||||||
log(`------------------`);
|
log(`-------------------------`);
|
||||||
log(`BUC Server started`);
|
log(`BUC Server Worker started`);
|
||||||
log(`------------------`);
|
log(`-------------------------`);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log(LM_FATAL, e.stack);
|
log(LM_FATAL, e.stack);
|
||||||
ayncExit.exit(1);
|
ayncExit.exit(1);
|
||||||
|
|||||||
Reference in New Issue
Block a user