This commit is contained in:
Simon Leier
2022-09-23 17:54:12 +02:00
parent 02da9ca8fb
commit 9f8b79d961
12 changed files with 40 additions and 30 deletions
+1
View File
@@ -23,6 +23,7 @@ target/
*.dylib
*.dll
*.zip
*.xcframework/
isar-dart.h
# Android related
+6
View File
@@ -1,3 +1,9 @@
## 3.0.2
### Fixes
- Fixed native ports that were not closed correctly in some cases
## 3.0.1
### Enhancements
@@ -539,6 +539,7 @@ class IsarCollectionImpl<OBJ> extends IsarCollection<OBJ> {
final controller = StreamController<void>(
onCancel: () {
IC.isar_stop_watching(handle);
port.close();
},
);
@@ -569,6 +570,7 @@ class IsarCollectionImpl<OBJ> extends IsarCollection<OBJ> {
final controller = StreamController<void>(
onCancel: () {
IC.isar_stop_watching(handle);
port.close();
},
);
+3 -6
View File
@@ -177,18 +177,15 @@ void nCall(int result) {
}
Stream<void> wrapIsarPort(ReceivePort port) {
final portStreamController = StreamController<void>.broadcast();
port.listen(
(event) {
final portStreamController = StreamController<void>(onCancel: port.close);
port.listen((event) {
if (event == 0) {
portStreamController.add(null);
} else {
final error = isarErrorFromResult(event as int);
portStreamController.addError(error!);
}
},
onDone: portStreamController.close,
);
});
return portStreamController.stream;
}
+4 -3
View File
@@ -57,14 +57,15 @@ class IsarImpl extends IsarCommon implements Finalizable {
port.sendPort.nativePort,
);
await portStream.first;
return Txn(txnPtrPtr.value, write, portStream);
final txn = Txn.async(txnPtrPtr.value, write, portStream);
await txn.wait();
return txn;
}
@override
Transaction beginTxnSync(bool write, bool silent) {
nCall(IC.isar_txn_begin(ptr, _syncTxnPtrPtr, true, write, silent, 0));
return Txn(_syncTxnPtrPtr.value, write, null);
return Txn.sync(_syncTxnPtrPtr.value, write);
}
@override
@@ -129,6 +129,7 @@ class QueryImpl<T> extends Query<T> implements Finalizable {
final controller = StreamController<void>(
onCancel: () {
IC.isar_stop_watching(handle);
port.close();
},
);
+4 -4
View File
@@ -10,16 +10,16 @@ import 'package:isar/src/native/isar_core.dart';
/// @nodoc
class Txn extends Transaction {
/// @nodoc
Txn(this.ptr, bool write, Stream<void>? stream)
: super(stream == null, write) {
if (stream != null) {
Txn.sync(this.ptr, bool write) : super(true, write);
/// @nodoc
Txn.async(this.ptr, bool write, Stream<void> stream) : super(false, write) {
_completers = Queue();
stream.listen(
(_) => _completers.removeFirst().complete(),
onError: (Object e) => _completers.removeFirst().completeError(e),
);
}
}
/// An arena allocator that has the same lifetime as this transaction.
final alloc = Arena(malloc);
+1 -1
View File
@@ -1,6 +1,6 @@
name: isar
description: Extremely fast, easy to use, and fully async NoSQL database for Flutter.
version: 3.0.0
version: 3.0.1
repository: https://github.com/isar/isar/tree/main/packages/isar
homepage: https://github.com/isar/isar
issue_tracker: https://github.com/isar/isar/issues
+1
View File
@@ -2,3 +2,4 @@
!*.a
!*.dylib
!*.dll
!*.xcframework/
+2 -2
View File
@@ -1,6 +1,6 @@
name: isar_flutter_libs
description: Isar Core binaries for the Isar Database. Needs to be included for Flutter apps.
version: 3.0.0
version: 3.0.1
repository: https://github.com/isar/isar
homepage: https://isar.dev
@@ -11,7 +11,7 @@ environment:
dependencies:
flutter:
sdk: flutter
isar: 3.0.0
isar: 3.0.1
flutter:
plugin:
+2 -2
View File
@@ -1,6 +1,6 @@
name: isar_generator
description: Code generator for the Isar Database. Finds classes annotated with @Collection.
version: 3.0.0
version: 3.0.1
repository: https://github.com/isar/isar
homepage: https://isar.dev
@@ -13,7 +13,7 @@ dependencies:
dart_style: ^2.2.3
dartx: ^1.1.0
glob: ^2.0.2
isar: 3.0.0
isar: 3.0.1
path: ^1.8.1
source_gen: ^1.2.2
xxh3: ^1.0.1
+1
View File
@@ -11,6 +11,7 @@ curl "${github}/libisar_android_x86.so" -o packages/isar_flutter_libs/android/sr
curl "${github}/isar_ios.xcframework.zip" -o packages/isar_flutter_libs/ios/isar_ios.xcframework.zip --create-dirs -L -f
unzip packages/isar_flutter_libs/ios/isar_ios.xcframework.zip -d packages/isar_flutter_libs/ios
rm packages/isar_flutter_libs/ios/isar_ios.xcframework.zip
curl "${github}/libisar_macos.dylib" -o packages/isar_flutter_libs/macos/libisar.dylib --create-dirs -L -f
install_name_tool -id @rpath/libisar.dylib packages/isar_flutter_libs/macos/libisar.dylib