diff --git a/CHANGELOG.md b/CHANGELOG.md index ae04123..f44c7fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.2.1] - Release. +Reconnect error handling + +## [1.2.0] - Release. +Added resume connection + ## [1.1.9] - Release. Added new property event diff --git a/lib/src/Net/IIP/DistributedConnection.dart b/lib/src/Net/IIP/DistributedConnection.dart index 17ec66b..f6dc61c 100644 --- a/lib/src/Net/IIP/DistributedConnection.dart +++ b/lib/src/Net/IIP/DistributedConnection.dart @@ -260,36 +260,24 @@ class DistributedConnection extends NetworkConnection with IStore Future reconnect() async { - try - { if (await connect()) { - try - { - var bag = AsyncBag(); + var bag = AsyncBag(); - for(var i = 0; i < _resources.keys.length; i++) - { - var index = _resources.keys.elementAt(i); - // print("Re $i ${_resources[index].instance.template.className}"); - bag.add(fetch(index)); - } - - bag.seal(); - await bag; - } - catch(ex) + for(var i = 0; i < _resources.keys.length; i++) { - print(ex.toString()); + var index = _resources.keys.elementAt(i); + // print("Re $i ${_resources[index].instance.template.className}"); + bag.add(fetch(index)); } + + bag.seal(); + await bag; + + return true; } - } - catch(ex) - { + return false; - } - - return true; } /// diff --git a/lib/src/Net/Packets/IIPPacket.dart b/lib/src/Net/Packets/IIPPacket.dart index ffb3a43..edf8daf 100644 --- a/lib/src/Net/Packets/IIPPacket.dart +++ b/lib/src/Net/Packets/IIPPacket.dart @@ -220,6 +220,9 @@ class IIPPacket var cl = data.getUint32( offset); offset += 4; + if (_notEnough(offset, ends, cl)) + return -_dataLengthNeeded; + content = data.clip(offset, cl); offset += cl; diff --git a/pubspec.yaml b/pubspec.yaml index 120696b..936af19 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: esyur description: Distributed Object Framework. -version: 1.1.9 +version: 1.2.1 # author: Ahmed Zamil homepage: https://github.com/esyur/esyur-dart diff --git a/test/main.dart b/test/main.dart index ac0dfc2..844b814 100644 --- a/test/main.dart +++ b/test/main.dart @@ -7,8 +7,8 @@ main() async //test("Connect to server", () async { // connect to the server - var x = await Warehouse.get("iip://localhost:5000/sys/su", {"username": "admin", "password": "1234" - , "domain": "example.com"}); + var x = await Warehouse.get("iip://localhost:5000/sys/su", {"username": "admin", "password": "1234" + , "domain": "example.com"}); var now = DateTime.now(); @@ -24,18 +24,23 @@ main() async print(x.suspended); DistributedConnection con = x.connection; - con.close(); + //con.close(); print(x.suspended); now = DateTime.now(); - await con.reconnect(); + //await con.reconnect(); print("Time ${DateTime.now().difference(now).inSeconds}"); print(x.suspended); var u = await x.getMyTrackers(); print(trackers[0].suspended); + u[0].on("moved", (x){ + print("Movvvvvvvvvvvvvvvvved"); + }); + + Future.delayed(Duration(seconds: 100)); // for(var i = 0; i < trackers.length; i++) // print(trackers[i].name);