hamok
Version:
Lightweight Distributed Object Storage on RAFT consensus algorithm
66 lines (61 loc) • 1.67 kB
text/typescript
export class RemoveEntriesRequest<K> {
public readonly requestId: string;
public readonly keys: ReadonlySet<K>;
public readonly sourceEndpointId?: string;
public constructor(
requetId: string,
keys: ReadonlySet<K>,
public readonly prevValue?: unknown,
sourceEndpointId?: string,
) {
this.requestId = requetId;
this.keys = keys;
this.sourceEndpointId = sourceEndpointId;
}
public createResponse<V>(
removedEntries: ReadonlyMap<K, V>
): RemoveEntriesResponse<K, V> {
return new RemoveEntriesResponse<K, V>(
this.requestId,
removedEntries,
this.sourceEndpointId
);
}
}
export class RemoveEntriesResponse<K, V> {
public readonly requestId: string;
public readonly removedEntries: ReadonlyMap<K, V>;
public readonly destinationEndpointId?: string;
public constructor(
requetId: string,
removedEntries: ReadonlyMap<K, V>,
destinationEndpointId?: string
) {
this.requestId = requetId;
this.removedEntries = removedEntries;
this.destinationEndpointId = destinationEndpointId;
}
}
export class RemoveEntriesNotification<K> {
public readonly keys: ReadonlySet<K>;
public readonly sourceEndpointId?: string;
public readonly destinationEndpointId?: string;
public constructor(
keys: ReadonlySet<K>,
sourceEndpointId?: string,
destinationEndpointId?: string
) {
this.keys = keys;
this.sourceEndpointId = sourceEndpointId;
this.destinationEndpointId = destinationEndpointId;
}
}
export class EntriesRemovedNotification<K, V> {
public constructor(
public readonly entries: ReadonlyMap<K, V>,
public readonly sourceEndpointId?: string,
public readonly destinationEndpointId?: string
) {
// empty
}
}