Skip to content

Commit a0032ff

Browse files
committed
Switch to Uint8Buffer.
1 parent b4890e2 commit a0032ff

File tree

4 files changed

+25
-103
lines changed

4 files changed

+25
-103
lines changed

sqlite3/lib/src/wasm/vfs/dynamic_buffer.dart

Lines changed: 0 additions & 87 deletions
This file was deleted.

sqlite3/lib/src/wasm/vfs/indexed_db.dart

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'dart:math';
88
import 'dart:typed_data';
99

1010
import 'package:meta/meta.dart';
11-
import 'package:sqlite3/src/wasm/vfs/dynamic_buffer.dart';
11+
import 'package:typed_data/typed_buffers.dart';
1212
import 'package:web/web.dart' as web;
1313

1414
import '../../constants.dart';
@@ -534,9 +534,10 @@ final class IndexedDbFileSystem extends BaseVirtualFileSystem {
534534
final name = entry.key;
535535
final fileId = entry.value;
536536

537-
final buffer = DynamicBuffer();
537+
final buffer = Uint8Buffer();
538538
final data = await _asynchronous.readFully(fileId);
539-
buffer.add(data);
539+
buffer.length = data.length;
540+
buffer.setRange(0, data.length, data);
540541

541542
_memory.fileData[name] = buffer;
542543
}
@@ -647,7 +648,9 @@ class _IndexedDbFile implements VirtualFileSystemFile {
647648
void xWrite(Uint8List buffer, int fileOffset) {
648649
vfs._checkClosed();
649650

650-
final previousContent = vfs._memory.fileData[path] ?? DynamicBuffer();
651+
final previousContent = vfs._memory.fileData[path] ?? Uint8Buffer();
652+
final previousList =
653+
previousContent.buffer.asUint8List(0, previousContent.length);
651654
memoryFile.xWrite(buffer, fileOffset);
652655

653656
if (!vfs._inMemoryOnlyFiles.contains(path)) {
@@ -656,9 +659,8 @@ class _IndexedDbFile implements VirtualFileSystemFile {
656659
final copy = Uint8List(buffer.length);
657660
copy.setAll(0, buffer);
658661

659-
vfs._submitWork(
660-
_WriteFileWorkItem(vfs, path, previousContent.toUint8List())
661-
..writes.add(_OffsetAndBuffer(fileOffset, copy)));
662+
vfs._submitWork(_WriteFileWorkItem(vfs, path, previousList)
663+
..writes.add(_OffsetAndBuffer(fileOffset, copy)));
662664
}
663665
}
664666
}

sqlite3/lib/src/wasm/vfs/memory.dart

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import 'dart:math';
22
import 'dart:typed_data';
33

44
import 'package:path/path.dart' as p;
5-
import 'dynamic_buffer.dart';
5+
import 'package:typed_data/typed_buffers.dart';
66

77
import '../../constants.dart';
88
import '../../vfs.dart';
99
import 'utils.dart';
1010

1111
final class InMemoryFileSystem extends BaseVirtualFileSystem {
12-
final Map<String, DynamicBuffer?> fileData = {};
12+
final Map<String, Uint8Buffer?> fileData = {};
1313

1414
InMemoryFileSystem({super.name = 'dart-memory', super.random});
1515

@@ -35,7 +35,7 @@ final class InMemoryFileSystem extends BaseVirtualFileSystem {
3535
final create = flags & SqlFlag.SQLITE_OPEN_CREATE;
3636

3737
if (create != 0) {
38-
fileData[pathStr] = DynamicBuffer();
38+
fileData[pathStr] = Uint8Buffer();
3939
} else {
4040
throw VfsException(SqlError.SQLITE_CANTOPEN);
4141
}
@@ -70,7 +70,8 @@ class _InMemoryFile extends BaseVfsFile {
7070
if (file == null || file.length <= offset) return 0;
7171

7272
final available = min(buffer.length, file.length - offset);
73-
buffer.setRange(0, available, file.toUint8List(), offset);
73+
final list = file.buffer.asUint8List(0, file.length);
74+
buffer.setRange(0, available, list, offset);
7475
return available;
7576
}
7677

@@ -104,10 +105,10 @@ class _InMemoryFile extends BaseVfsFile {
104105
final file = vfs.fileData[path];
105106

106107
if (file == null) {
107-
vfs.fileData[path] = DynamicBuffer();
108-
vfs.fileData[path]!.truncate(size);
108+
vfs.fileData[path] = Uint8Buffer();
109+
vfs.fileData[path]!.length = size;
109110
} else {
110-
file.truncate(size);
111+
file.length = size;
111112
}
112113
}
113114

@@ -121,9 +122,14 @@ class _InMemoryFile extends BaseVfsFile {
121122
var file = vfs.fileData[path];
122123

123124
if (file == null) {
124-
file = DynamicBuffer();
125+
file = Uint8Buffer();
125126
vfs.fileData[path] = file;
126127
}
127-
file.write(buffer, fileOffset);
128+
129+
var endIndex = fileOffset + buffer.length;
130+
if (endIndex > file.length) {
131+
file.length = endIndex;
132+
}
133+
file.setRange(fileOffset, endIndex, buffer);
128134
}
129135
}

sqlite3/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ dependencies:
2727
meta: ^1.3.0
2828
path: ^1.8.0
2929
web: ^1.0.0
30+
typed_data: ^1.3.2
3031

3132
dev_dependencies:
3233
analyzer: ^6.4.1

0 commit comments

Comments
 (0)