adk-typescript
Version:
TypeScript port of Google's Agent Development Kit (ADK)
63 lines (62 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LiveRequestQueue = void 0;
/**
* A queue for managing live requests in streaming sessions.
*/
class LiveRequestQueue {
constructor() {
this.queue = [];
this.resolvers = [];
}
/**
* Adds a request to close the connection to the queue.
*/
sendClose() {
this.enqueue({ close: true });
}
/**
* Adds a blob request to the queue.
*
* @param blob The binary blob data
*/
sendBlob(blob) {
this.enqueue({ blob });
}
/**
* Adds a content request to the queue.
*
* @param content The content data
*/
sendContent(content) {
this.enqueue({ content });
}
/**
* Gets the next request from the queue.
*
* @returns A promise that resolves to the next request
*/
async get() {
if (this.queue.length > 0) {
return this.queue.shift();
}
return new Promise((resolve) => {
this.resolvers.push(resolve);
});
}
/**
* Adds a request to the queue.
*
* @param request The request to add
*/
enqueue(request) {
if (this.resolvers.length > 0) {
const resolve = this.resolvers.shift();
resolve(request);
}
else {
this.queue.push(request);
}
}
}
exports.LiveRequestQueue = LiveRequestQueue;