Initial project structure

This commit is contained in:
2026-07-20 16:44:23 +02:00
commit c19fde4126
27 changed files with 4679 additions and 0 deletions
+192
View File
@@ -0,0 +1,192 @@
export interface WrapperInfo {
id:string;
hostname:string;
commandQueue:string;
cpu:number;
ram:number;
ramFree:number;
online:boolean;
lastHeartbeat:number;
servers:string[];
}
export class WrapperRegistry {
private wrappers =
new Map<string, WrapperInfo>();
add(wrapper:WrapperInfo){
this.wrappers.set(
wrapper.id,
wrapper
);
console.log(
"Wrapper gespeichert:",
wrapper.id
);
}
get(id:string){
return this.wrappers.get(id);
}
getAll(){
return Array.from(
this.wrappers.values()
);
}
updateHeartbeat(id:string){
const wrapper =
this.wrappers.get(id);
if(!wrapper)
return;
wrapper.lastHeartbeat =
Date.now();
wrapper.online =
true;
}
update(wrapper:WrapperInfo){
this.wrappers.set(
wrapper.id,
wrapper
);
}
checkOffline(timeout:number){
const now =
Date.now();
for(const wrapper of this.wrappers.values()){
if(
wrapper.online &&
now - wrapper.lastHeartbeat > timeout
){
wrapper.online = false;
console.log(
"Wrapper offline:",
wrapper.id
);
}
}
}
updateStatus(data:any){
const wrapper =
this.wrappers.get(
data.wrapperId
);
if(!wrapper)
return;
wrapper.ramFree =
data.ramFree;
wrapper.servers =
data.servers;
wrapper.lastHeartbeat =
Date.now();
wrapper.online =
true;
}
}