UEA-Prodem
This commit is contained in:
+50
@@ -0,0 +1,50 @@
|
||||
const ids = new Uint16Array(1);
|
||||
export class ClientHttp2SessionRef {
|
||||
id = ids[0]++;
|
||||
total = 0;
|
||||
max = 0;
|
||||
session;
|
||||
refs = 0;
|
||||
constructor(session) {
|
||||
session.unref();
|
||||
this.session = session;
|
||||
}
|
||||
retain() {
|
||||
if (this.session.destroyed) {
|
||||
throw new Error("@smithy/node-http-handler - cannot acquire reference to destroyed session.");
|
||||
}
|
||||
this.refs += 1;
|
||||
this.total += 1;
|
||||
this.max = Math.max(this.refs, this.max);
|
||||
this.session.ref();
|
||||
}
|
||||
free() {
|
||||
if (this.session.destroyed) {
|
||||
return;
|
||||
}
|
||||
this.refs -= 1;
|
||||
if (this.refs === 0) {
|
||||
this.session.unref();
|
||||
}
|
||||
if (this.refs < 0) {
|
||||
throw new Error("@smithy/node-http-handler - ClientHttp2Session refcount at zero, cannot decrement.");
|
||||
}
|
||||
}
|
||||
deref() {
|
||||
return this.session;
|
||||
}
|
||||
close() {
|
||||
if (!this.session.closed) {
|
||||
this.session.close();
|
||||
}
|
||||
}
|
||||
destroy() {
|
||||
this.refs = 0;
|
||||
if (!this.session.destroyed) {
|
||||
this.session.destroy();
|
||||
}
|
||||
}
|
||||
useCount() {
|
||||
return this.refs;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user