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.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							66 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
 |