MCPcopy Index your code
hub / github.com/garrytan/gstack / flushBuffers

Function flushBuffers

browse/src/server.ts:579–621  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

577let flushInProgress = false;
578
579async function flushBuffers() {
580 if (flushInProgress) return; // Guard against concurrent flush
581 flushInProgress = true;
582
583 try {
584 // Console buffer
585 const newConsoleCount = consoleBuffer.totalAdded - lastConsoleFlushed;
586 if (newConsoleCount > 0) {
587 const entries = consoleBuffer.last(Math.min(newConsoleCount, consoleBuffer.length));
588 const lines = entries.map(e =>
589 `[${new Date(e.timestamp).toISOString()}] [${e.level}] ${e.text}`
590 ).join('\n') + '\n';
591 fs.appendFileSync(CONSOLE_LOG_PATH, lines);
592 lastConsoleFlushed = consoleBuffer.totalAdded;
593 }
594
595 // Network buffer
596 const newNetworkCount = networkBuffer.totalAdded - lastNetworkFlushed;
597 if (newNetworkCount > 0) {
598 const entries = networkBuffer.last(Math.min(newNetworkCount, networkBuffer.length));
599 const lines = entries.map(e =>
600 `[${new Date(e.timestamp).toISOString()}] ${e.method} ${e.url} → ${e.status || 'pending'} (${e.duration || '?'}ms, ${e.size || '?'}B)`
601 ).join('\n') + '\n';
602 fs.appendFileSync(NETWORK_LOG_PATH, lines);
603 lastNetworkFlushed = networkBuffer.totalAdded;
604 }
605
606 // Dialog buffer
607 const newDialogCount = dialogBuffer.totalAdded - lastDialogFlushed;
608 if (newDialogCount > 0) {
609 const entries = dialogBuffer.last(Math.min(newDialogCount, dialogBuffer.length));
610 const lines = entries.map(e =>
611 `[${new Date(e.timestamp).toISOString()}] [${e.type}] "${e.message}" → ${e.action}${e.response ? ` "${e.response}"` : ''}`
612 ).join('\n') + '\n';
613 fs.appendFileSync(DIALOG_LOG_PATH, lines);
614 lastDialogFlushed = dialogBuffer.totalAdded;
615 }
616 } catch (err: any) {
617 console.error('[browse] Buffer flush failed:', err.message);
618 } finally {
619 flushInProgress = false;
620 }
621}
622
623// Flush every 1 second
624const flushInterval = setInterval(flushBuffers, 1000);

Callers 1

shutdownFunction · 0.85

Calls 1

lastMethod · 0.80

Tested by

no test coverage detected