From 5688d272d686ed7b9d1f27c69213f2e377c484f7 Mon Sep 17 00:00:00 2001 From: droak Date: Thu, 25 Jul 2024 17:21:07 +0900 Subject: [PATCH] network messages proto; fix node build for proto structure --- examples/canvas/src/objects/canvas.ts | 5 ++--- examples/canvas/src/objects/pixel.ts | 8 +++----- packages/network/src/index.ts | 5 +++-- packages/node/src/index.ts | 9 +++++---- packages/object/src/index.ts | 19 ++++++++++--------- packages/object/src/proto/index.ts | 1 - packages/object/src/proto/object.proto | 1 - 7 files changed, 23 insertions(+), 25 deletions(-) delete mode 100644 packages/object/src/proto/index.ts diff --git a/examples/canvas/src/objects/canvas.ts b/examples/canvas/src/objects/canvas.ts index 708ff1a4..b9cb11cf 100644 --- a/examples/canvas/src/objects/canvas.ts +++ b/examples/canvas/src/objects/canvas.ts @@ -1,7 +1,7 @@ import { TopologyObject } from "@topology-foundation/object"; import { IPixel, Pixel } from "./pixel"; -export interface ICanvas extends TopologyObject { +export interface ICanvas { width: number; height: number; canvas: IPixel[][]; @@ -20,13 +20,12 @@ export interface ICanvas extends TopologyObject { merge(peerCanvas: Canvas): void; } -export class Canvas extends TopologyObject implements ICanvas { +export class Canvas implements TopologyObject, ICanvas { width: number; height: number; canvas: IPixel[][]; constructor(peerId: string, width: number, height: number) { - super(peerId); this.width = width; this.height = height; this.canvas = Array.from(new Array(width), () => diff --git a/examples/canvas/src/objects/pixel.ts b/examples/canvas/src/objects/pixel.ts index 8c5eaf40..f9ec0703 100644 --- a/examples/canvas/src/objects/pixel.ts +++ b/examples/canvas/src/objects/pixel.ts @@ -1,7 +1,6 @@ import { GCounter } from "@topology-foundation/crdt"; -import { TopologyObject } from "@topology-foundation/object"; -export interface IPixel extends TopologyObject { +export interface IPixel { red: GCounter; green: GCounter; blue: GCounter; @@ -11,13 +10,12 @@ export interface IPixel extends TopologyObject { merge(peerPixel: IPixel): void; } -export class Pixel extends TopologyObject implements IPixel { +export class Pixel implements IPixel { red: GCounter; green: GCounter; blue: GCounter; - constructor(peerId: string) { - super(peerId); + constructor() { this.red = new GCounter({}); this.green = new GCounter({}); this.blue = new GCounter({}); diff --git a/packages/network/src/index.ts b/packages/network/src/index.ts index 3d92a68d..dc9314e9 100644 --- a/packages/network/src/index.ts +++ b/packages/network/src/index.ts @@ -1,2 +1,3 @@ -export { TopologyNetworkNodeConfig, TopologyNetworkNode } from "./node.js"; -export { stringToStream, streamToString } from "./stream.js"; +export * from "./node.js"; +export * from "./stream.js"; +export * from "./proto/messages_pb.js"; diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 27901166..3c354b1b 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -86,7 +86,8 @@ export class TopologyNode { ); const local = this._objectStore.get(object["id"]); if (local) { - local.merge(object); + // TODO: merge requires a merge function in wasm + // local.merge(object); this._objectStore.put(object["id"], local); } } @@ -99,7 +100,7 @@ export class TopologyNode { } createObject(object: TopologyObject) { - const objectId = object.getObjectId(); + const objectId = object.id; this.networkNode.subscribe(objectId); this._objectStore.put(objectId, object); } @@ -158,14 +159,14 @@ export class TopologyNode { } updateObject(object: TopologyObject, update_data: string) { - this._objectStore.put(object.getObjectId(), object); + this._objectStore.put(object.id, object); // not dialed, emitted through pubsub const message = `{ "type": "object_update", "data": [${uint8ArrayFromString(update_data)}] }`; this.networkNode.broadcastMessage( - object.getObjectId(), + object.id, uint8ArrayFromString(message), ); } diff --git a/packages/object/src/index.ts b/packages/object/src/index.ts index 255678d8..4ac2b96f 100644 --- a/packages/object/src/index.ts +++ b/packages/object/src/index.ts @@ -1,18 +1,19 @@ import * as crypto from "crypto"; import { TopologyObject } from "./proto/object_pb.js"; -export * from "./proto/index.js"; +export * from "./proto/object_pb.js"; -function newTopologyObject(peerId: string, abi?: string, bytecode?: string): TopologyObject { - const id = crypto - .createHash("sha256") - .update(abi ?? "") - .update(peerId) - .update(Math.floor(Math.random() * Number.MAX_VALUE).toString()) - .digest("hex"); +/* Creates a new TopologyObject +*/ +export function newTopologyObject(peerId: string, id?: string, abi?: string, bytecode?: string): TopologyObject { return { - id, + id: id ?? crypto + .createHash("sha256") + .update(abi ?? "") + .update(peerId) + .update(Math.floor(Math.random() * Number.MAX_VALUE).toString()) + .digest("hex"), abi: abi ?? "", bytecode: bytecode ?? "" }; diff --git a/packages/object/src/proto/index.ts b/packages/object/src/proto/index.ts deleted file mode 100644 index e4b918f8..00000000 --- a/packages/object/src/proto/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./object_pb.js"; diff --git a/packages/object/src/proto/object.proto b/packages/object/src/proto/object.proto index 078676dc..8fbe1f39 100644 --- a/packages/object/src/proto/object.proto +++ b/packages/object/src/proto/object.proto @@ -1,5 +1,4 @@ syntax = "proto3"; - package topology.object; message TopologyObject {