MMap native library
This commit is contained in:
40
test.ts
Normal file
40
test.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
// test.ts
|
||||
import * as fs from 'node:fs';
|
||||
import mmap from './lib/index.js';
|
||||
|
||||
const FILE_PATH = './test_mmap.bin';
|
||||
const FILE_SIZE = 4096;
|
||||
|
||||
// 파일 생성
|
||||
const fd = fs.openSync(FILE_PATH, 'w+');
|
||||
fs.ftruncateSync(fd, FILE_SIZE);
|
||||
|
||||
// mmap 매핑
|
||||
const buffer = mmap.map(
|
||||
FILE_SIZE,
|
||||
mmap.PROT_READ | mmap.PROT_WRITE,
|
||||
mmap.MAP_SHARED,
|
||||
fd,
|
||||
0
|
||||
);
|
||||
|
||||
console.log('Mapped buffer length:', buffer.length);
|
||||
console.log('Page size:', mmap.pageSize());
|
||||
|
||||
// 데이터 쓰기
|
||||
buffer.write('Hello, mmap!', 0, 'utf8');
|
||||
buffer.writeUInt32LE(12345, 100);
|
||||
|
||||
// msync
|
||||
mmap.sync(buffer, 0, FILE_SIZE, mmap.MS_SYNC);
|
||||
console.log('Data synced to disk');
|
||||
|
||||
// 데이터 읽기
|
||||
console.log('String:', buffer.toString('utf8', 0, 12));
|
||||
console.log('Number:', buffer.readUInt32LE(100));
|
||||
|
||||
// 정리
|
||||
fs.closeSync(fd);
|
||||
fs.unlinkSync(FILE_PATH);
|
||||
|
||||
console.log('Test passed!');
|
||||
Reference in New Issue
Block a user