Skip to content

Commit 86740dd

Browse files
committed
core: return work printer for metric
1 parent d725c3d commit 86740dd

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

packages/server/client/printer.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,25 @@ export async function printFile(doc) {
4343
if (randomP.status === 'idle') {
4444
logger.info(`Printing ${_id} on ${randomP.printer}`);
4545
await print(path.resolve(process.cwd(), `data/${tid}#${_id}.pdf`), randomP.printer, 1, 5);
46-
return;
46+
return randomP.printer;
4747
}
4848
for (const printer of printers.filter((p) => p.printer !== randomP.printer)) {
4949
logger.info(`Checking ${printer.printer} ${printer.status}`);
5050
if (printer.status === 'idle') {
5151
logger.info(`Printing ${_id} on ${printer.printer}`);
5252
await print(path.resolve(process.cwd(), `data/${tid}#${_id}.pdf`), printer.printer, 1, 5);
53-
return;
53+
return printer.printer;
5454
}
5555
}
5656
logger.info('No Printer can found to print, sleeping...');
5757
await sleep(3000);
5858
}
5959
}
60+
logger.error('No Printer Configured');
61+
return null;
6062
} catch (e) {
6163
logger.error(e);
64+
return null;
6265
}
6366
}
6467

@@ -83,8 +86,9 @@ async function fetchTask(c) {
8386
}
8487
if (body.doc) {
8588
logger.info(`Print task ${body.doc.tid}#${body.doc._id}...`);
86-
await printFile(body.doc);
87-
await post(`${c.server}/client/${c.token}/doneprint/${body.doc._id}`);
89+
const printer = await printFile(body.doc);
90+
if (!printer) throw new Error('No Printer Configured');
91+
await post(`${c.server}/client/${c.token}/doneprint/${body.doc._id}?printer=${printer}`);
8892
logger.info(`Print task ${body.doc.tid}#${body.doc._id} completed.`);
8993
} else {
9094
logger.info('No print task, sleeping...');

packages/server/handler/client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class ClientPrintDoneHandler extends Handler {
8181
if (!code) throw new ValidationError('Code', null, 'Code not found');
8282
if (code.printer !== params.cid) throw new BadRequestError('Client', null, 'Client not match');
8383
await this.ctx.db.code.updateOne({ _id: params.tid }, { $set: { done: 1, doneAt: new Date().getTime() } });
84-
await this.ctx.parallel('print/doneTask', client._id);
84+
await this.ctx.parallel('print/doneTask', client._id, `${client._id}#${params.printer || 'unknown'}`);
8585
this.response.body = { code: 1 };
8686
logger.info(`Client ${client.name} connected, print task ${code.tid}#${code._id} completed.`);
8787
}

packages/server/utils/metrics.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ declare module 'cordis' {
1010
interface Events {
1111
'print/newTask': () => void;
1212
'print/sendTask': (client: string) => void;
13-
'print/doneTask': (client: string) => void;
13+
'print/doneTask': (client: string, printer: string) => void;
1414
}
1515
}
1616

@@ -42,7 +42,7 @@ export function createMetricsRegistry(ctx: Context) {
4242

4343
ctx.on('print/sendTask', (client) => printTaskCounter.inc({ status: 'sent', client }));
4444

45-
ctx.on('print/doneTask', (client) => printTaskCounter.inc({ status: 'done', client }));
45+
ctx.on('print/doneTask', (client, printer) => printTaskCounter.inc({ status: 'done', client, printer }));
4646

4747
collectDefaultMetrics({ register: registry });
4848

0 commit comments

Comments
 (0)