Skip to content
Snippets Groups Projects
Commit fbc69175 authored by swvitaliy's avatar swvitaliy
Browse files

Rename zeroBitset -> busyBitSet; add freeBitset

parent 6e00e2cd
Branches
Tags v1.2.5
No related merge requests found
{
"name": "crac-utils",
"version": "1.2.4",
"version": "1.2.5",
"description": "The GBooking crac-utils library",
"main": "dist/cjs/index.js",
"scripts": {
......
import {defaultVectorSlotSize, zeroBitSets, bitsetStrToInt32Array, prepareBitset, newZeroBitset, setAnd, setUnion,
iterateCRACVector, getCRACFreeSlots} from "./vector";
import {defaultVectorSlotSize, busyBitSets, freeBitSets, newBusyBitset, newFreeBitset,
bitsetStrToInt32Array, prepareBitset, setAnd, setUnion, iterateCRACVector, getCRACFreeSlots} from "./vector";
import {makeSlots, calculateWorkloadWeights, getFirstLastMinutes, isSlotAvailable} from './utils';
export {
// export from vector
defaultVectorSlotSize, zeroBitSets, bitsetStrToInt32Array, prepareBitset, newZeroBitset, setAnd, setUnion,
iterateCRACVector, getCRACFreeSlots,
defaultVectorSlotSize, busyBitSets, freeBitSets, newBusyBitset, newFreeBitset, bitsetStrToInt32Array, prepareBitset,
setAnd, setUnion, iterateCRACVector, getCRACFreeSlots,
// export from utils
makeSlots, calculateWorkloadWeights, getFirstLastMinutes, isSlotAvailable
};
......@@ -3,7 +3,7 @@
export const minutesInDay = 1440;
export const defaultVectorSlotSize = 5;
export const zeroBitSets = {
export const busyBitSets = {
5: [0, 0, 0, 0, 0, 0, 0, 0, 0],
1: [
0, 0, 0, 0, 0, 0, 0, 0, 0,
......@@ -14,6 +14,11 @@ export const zeroBitSets = {
]
};
export const freeBitSets = {
5: busyBitSets[5].map(num => ~num),
0: busyBitSets[0].map(num => ~num),
};
/**
* Convert string bitset into int32 array
* @param str bitset in string representation
......@@ -44,8 +49,12 @@ export function prepareBitset(bitset, vectorSlotSize) {
return (typeof bitset === "string") ? bitsetStrToInt32Array(bitset, vectorSlotSize) : bitset;
}
export function newZeroBitset(vectorSlotSize) {
return zeroBitSets[vectorSlotSize].slice();
export function newBusyBitset(vectorSlotSize) {
return busyBitSets[vectorSlotSize].slice();
}
export function newFreeBitset(vectorSlotSize) {
return freeBitSets[vectorSlotSize].slice();
}
/**
......@@ -111,11 +120,11 @@ export function iterateCRACVector(bitset, fn, offset, end) {
* Таким образом, чтобы вычислить свободный слот, нужно время начала умножить на cracTimeUnit.
*
* @param bitset CRAC вектор
* @param vectorSlotSize количество битов в слоте
* @param [offset=0] смещение в CRAC векторе, считаемое в количестве бит
* @param slotSize Количество битов в слоте
* @param [offset=0] Смещение в CRAC векторе, считаемое в количестве бит
* @returns {Array}
*/
export function getCRACFreeSlots(bitset, vectorSlotSize, offset = 0) {
export function getCRACFreeSlots(bitset, slotSize, offset = 0) {
let freeSlots = [];
let slotLen = 0;
let slotOffset = -1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment