| library syncbase_client; |
| |
| import 'dart:async'; |
| |
| import 'package:mojo/bindings.dart' as bindings; |
| |
| import 'gen/dart-gen/mojom/lib/mojo/syncbase.mojom.dart' as mojom; |
| |
| // Export struct types from syncbase.mojom. |
| // TODO(nlacasse): Create wrapper around Perms, and possibly other struct |
| // constructors, since the default constructors are not user-friendly. They |
| // take zero arguments, so all fields must be populated with assignments. |
| export 'gen/dart-gen/mojom/lib/mojo/syncbase.mojom.dart' |
| show BatchOptions, Perms, SyncGroupMemberInfo, SyncGroupSpec; |
| |
| part 'src/app.dart'; |
| part 'src/named_resource.dart'; |
| part 'src/nosql/database.dart'; |
| part 'src/nosql/row.dart'; |
| part 'src/nosql/syncgroup.dart'; |
| part 'src/nosql/table.dart'; |
| |
| typedef void ConnectToServiceFn(String url, bindings.ProxyBase proxy); |
| |
| bool isError(mojom.Error err) { |
| return err != null && err.id != ''; |
| } |
| |
| class SyncbaseClient { |
| final mojom.SyncbaseProxy _proxy; |
| |
| SyncbaseClient(ConnectToServiceFn cts, String url) |
| : _proxy = new mojom.SyncbaseProxy.unbound() { |
| print('connecting to $url'); |
| cts(url, _proxy); |
| print('connected'); |
| } |
| |
| // Closes the connection to the syncbase server. |
| // TODO(nlacasse): Is this necessary? |
| Future close({bool immediate: false}) { |
| return _proxy.close(immediate: immediate); |
| } |
| |
| // app returns the app with the given name, which should not contain slashes. |
| SyncbaseApp app(String name) => new SyncbaseApp._internal(_proxy, name); |
| |
| Future<mojom.Perms> getPermissions() async { |
| var v = await _proxy.ptr.serviceGetPermissions(); |
| if (isError(v.err)) throw v.err; |
| // TODO(nlacasse): We need to return the version too. Create a struct type |
| // that combines perms and version? |
| return v.perms; |
| } |
| |
| Future setPermissions(mojom.Perms perms, String version) async { |
| var v = await _proxy.ptr.serviceSetPermissions(perms, version); |
| if (isError(v.err)) throw v.err; |
| } |
| } |