You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.2 KiB
65 lines
1.2 KiB
# memory-pager |
|
|
|
Access memory using small fixed sized buffers instead of allocating a huge buffer. |
|
Useful if you are implementing sparse data structures (such as large bitfield). |
|
|
|
 |
|
|
|
``` |
|
npm install memory-pager |
|
``` |
|
|
|
## Usage |
|
|
|
``` js |
|
var pager = require('paged-memory') |
|
|
|
var pages = pager(1024) // use 1kb per page |
|
|
|
var page = pages.get(10) // get page #10 |
|
|
|
console.log(page.offset) // 10240 |
|
console.log(page.buffer) // a blank 1kb buffer |
|
``` |
|
|
|
## API |
|
|
|
#### `var pages = pager(pageSize)` |
|
|
|
Create a new pager. `pageSize` defaults to `1024`. |
|
|
|
#### `var page = pages.get(pageNumber, [noAllocate])` |
|
|
|
Get a page. The page will be allocated at first access. |
|
|
|
Optionally you can set the `noAllocate` flag which will make the |
|
method return undefined if no page has been allocated already |
|
|
|
A page looks like this |
|
|
|
``` js |
|
{ |
|
offset: byteOffset, |
|
buffer: bufferWithPageSize |
|
} |
|
``` |
|
|
|
#### `pages.set(pageNumber, buffer)` |
|
|
|
Explicitly set the buffer for a page. |
|
|
|
#### `pages.updated(page)` |
|
|
|
Mark a page as updated. |
|
|
|
#### `pages.lastUpdate()` |
|
|
|
Get the last page that was updated. |
|
|
|
#### `var buf = pages.toBuffer()` |
|
|
|
Concat all pages allocated pages into a single buffer |
|
|
|
## License |
|
|
|
MIT
|
|
|