@g9tm/ syncdata-lynx (英语)
Lynx 对支持 @g9tm/syncdata, G9SyncData 客户端的 TypeScript 双子:
G9SyncDataLynxModule– 一个本地模块(Lynx Autolink),将服务器的Brotli帧从JS解码 线程: 有 Google 的 Androidorg.brotli:dec, iOS 15+ 带有 Apple 压缩框架, Lynxtron 有节点:zlib (单位:千美元)@g9tm/syncdata-lynx/lynxtron) (中文(简体) ).createLynxSyncTransport()——G9本土WebSocket上的同步传输@g9tm/signalr-supernetcore-lynx(Lynx 发布架构没有 WebSocket ), 默认的 MessagePack, 没有谈判回合 旅行时间.useLynxBrotli()——使本地解码器成为商店和引擎所读取的每一帧的默认.lynxSnapshotFileSink(databasePath)——快照文件的设备侧 (ADR- 0072):一个站点的第一次下载 以 SQLite 文件以 1 MiB 片段到达, 每个片段被解压, 对照其 SHA-256 检查并写入 输入原生模块所显示的文件。 文件的字节再也不会回到JavaScript;商店复制它 以SQL(ATTACH+一个INSERT … SELECT(按表格开列).
1.2.2版,随 @g9tm/syncdata 和.NET软件包.
安装
npm install @g9tm/syncdata @g9tm/syncdata-lynx @g9tm/signalr-supernetcore-lynx @g9tm/signalr-supernetcore-client @microsoft/signalr @microsoft/signalr-protocol-msgpack @msgpack/msgpack
自动链接拾取本地模块 @g9tm/syncdata-lynx 财务报告和审定财务报表 @g9tm/signalr-supernetcore-lynx (单位:千美元)lynx.lib.json) (中文(简体) ).
iOS: 舱 g9tm-syncdata-lynx 财务报告和审定财务报表 g9tm-signalr-lynx (Lynx 4.0.3 注册iOS 模块明确:
[config registerModule:G9SyncDataLynxModule.class]) (中文(简体) ).
使用
import { G9SyncEngine } from '@g9tm/syncdata';
import { G9SqliteSyncStore } from '@g9tm/syncdata/sqlite';
import { createLynxSyncTransport, lynxSnapshotFileSink, useLynxBrotli } from '@g9tm/syncdata-lynx';
import { createNativeSqliteDriver } from '@g9lynx/native'; // G9LynxControls
useLynxBrotli();
const store = new G9SqliteSyncStore({
driver: createNativeSqliteDriver(),
databasePath,
// null on a platform that cannot take files (an older module): the device then receives rows, as before.
snapshotFiles: await lynxSnapshotFileSink(databasePath),
});
const transport = createLynxSyncTransport({ url: 'https://sync.example.com/g9sync', accessTokenFactory: () => token });
const engine = new G9SyncEngine(store, transport, model);
await engine.initialize();
商店接受任何驱动程序 G9SqliteDriver 形状( e)@g9tm/syncdata/sqlite); G9Lynx Controls 本地驱动程序
(Androidx.sqlite被捆绑在Android上,系统SQLite在iOS上)是预定的. 由.NET 客户端编写的数据库
(MAUI)是相同的文件格式,表格和元数据: Lynx app打开并继续.
分阶段快照文件前往 <the app's cache directory>/g9sync-files/<database name>-<hash of its path>: 一个文件夹
每个数据库(两个用户的数据库从不扫描对方的文件),App-private以及Android Auto备份和外部
iOS备份. 过 { directory } 选择其它位置; 存储在表格复制后删除每个文件
清除它下次开始时自己写的残骸 文件夹里没有其它东西被触动.
土著合同
| 方法 | 答复({ ok, value } 编号 : { ok: false, error: { code, message } }(中文(简体) ) |
|---|---|
capabilities(callback) | { version, platform, brotli, snapshotFiles, cacheDirectory } |
brotliDecompress(data: ArrayBuffer, expectedLength: number, callback) | 精确的矩阵 expectedLength 字节; 错误 G9SYNC-BROTLI-ARG, (中文(简体) ), G9SYNC-BROTLI-INVALID, (中文(简体) ), G9SYNC-BROTLI-UNAVAILABLE |
snapshotFileCreate(path, size, callback) | 无效; 创建目录, 截取已有文件 |
snapshotFileWriteSegment(path, offset, data: ArrayBuffer, length, sha256, sync, callback) | 无效;解压,检查长度和SHA-256,然后写作: offset (单位:千美元)sync:先被冲入稳定存储器 - F FLFSYNC on iOS; G9SYNC-FILE-INVALID 没有写 |
snapshotFileSize(path, callback) | 大小,或无 |
snapshotFileHead(path, length, callback) | 第一个矩阵 length 字节 |
snapshotFileRemove(path, callback) | 无效; 文件缺失不是错误 |
snapshotFileList(directory, callback) | 目录文件的完整路径排序 |
文件错误 : G9SYNC-FILE-ARG, (中文(简体) ), G9SYNC-FILE-INVALID, (中文(简体) ), G9SYNC-FILE-IO (有系统的理由),在联署材料方面
G9SYNC-FILE-UNAVAILABLE 没有方法的模块。 部分工作运行在自己的本地线条(Android)或
序列队列(iOS),因此它从不等待一个帧解码和一个文件地块的写法顺序.
何物证明在哪里,何物仍需要设备: 土著-弱势群体-Ping.md。 。 。 .
测试
npm test # the JS wrapper over fake native modules
npm run test:lynxsim # the whole sync against the real .NET sample server, in a Lynx-shaped sandbox (needs the disposable PostgreSQL)
npm run test:android-jvm # the Kotlin core on a JVM
npm run check:android-module # compiles the module against Lynx 4.1.0, checks the Autolink provider
npm run test:ios-core # the iOS cores (Brotli + snapshot files): Apple clang + Compression on macOS, GNUstep + libbrotlidec on Linux/WSL
许可证
麻省理工学院.