Skip to content

Commit

Permalink
fix examples
Browse files Browse the repository at this point in the history
  • Loading branch information
d-roak committed Sep 18, 2024
1 parent 3efbefb commit 6efcdd3
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 70 deletions.
6 changes: 0 additions & 6 deletions examples/canvas/src/objects/canvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,6 @@ export class Canvas implements CRO {
return this.canvas[x][y];
}

merge(peerCanvas: Canvas): void {
this.canvas.forEach((row, x) =>
row.forEach((pixel, y) => pixel.merge(peerCanvas.pixel(x, y))),
);
}

resolveConflicts(_): ResolveConflictsType {
return { action: ActionType.Nop };
}
Expand Down
39 changes: 13 additions & 26 deletions examples/canvas/src/objects/pixel.ts
Original file line number Diff line number Diff line change
@@ -1,38 +1,25 @@
import { GCounter } from "@topology-foundation/crdt";

export class Pixel {
red: GCounter;
green: GCounter;
blue: GCounter;
red: number;
green: number;
blue: number;

constructor() {
this.red = new GCounter({});
this.green = new GCounter({});
this.blue = new GCounter({});
constructor(red?: number, green?: number, blue?: number) {
this.red = red ?? 0;
this.green = green ?? 0;
this.blue = blue ?? 0;
}

color(): [number, number, number] {
return [
this.red.value() % 256,
this.green.value() % 256,
this.blue.value() % 256,
];
}

paint(nodeId: string, rgb: [number, number, number]): void {
this.red.increment(nodeId, rgb[0]);
this.green.increment(nodeId, rgb[1]);
this.blue.increment(nodeId, rgb[2]);
return [this.red % 256, this.green % 256, this.blue % 256];
}

counters(): [GCounter, GCounter, GCounter] {
counters(): [number, number, number] {
return [this.red, this.green, this.blue];
}

merge(peerPixel: Pixel): void {
const peerCounters = peerPixel.counters();
this.red.merge(peerCounters[0]);
this.green.merge(peerCounters[1]);
this.blue.merge(peerCounters[2]);
paint(rgb: [number, number, number]): void {
this.red += rgb[0];
this.green += rgb[1];
this.blue += rgb[2];
}
}
41 changes: 3 additions & 38 deletions examples/chat/src/objects/chat.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
// if it can't compile, append src/index.asc to the import path on runtime
import {
type GSet,
gset_add,
gset_create,
gset_merge,
} from "@topology-foundation/crdt";
import {
ActionType,
type CRO,
Expand All @@ -18,9 +11,9 @@ export class Chat implements CRO {
operations: string[] = ["addMessage"];
semanticsType: SemanticsType = SemanticsType.pair;
// store messages as strings in the format (timestamp, message, nodeId)
messages: GSet<string>;
messages: Set<string>;
constructor() {
this.messages = gset_create<string>();
this.messages = new Set<string>();
}

addMessage(timestamp: string, message: string, nodeId: string): void {
Expand All @@ -35,14 +28,10 @@ export class Chat implements CRO {
this.messages.add(`(${timestamp}, ${message}, ${nodeId})`);
}

getMessages(): GSet<string> {
getMessages(): Set<string> {
return this.messages;
}

merge(other: Chat): void {
this.messages.merge(other.messages);
}

resolveConflicts(vertices: Vertex[]): ResolveConflictsType {
return { action: ActionType.Nop };
}
Expand All @@ -54,27 +43,3 @@ export class Chat implements CRO {
}
}
}

export function createChat(): Chat {
return new Chat();
}

// @ts-ignore
export function addMessage(
chat: Chat,
timestamp: string,
message: string,
nodeId: string,
): void {
gset_add(chat.messages, `(${timestamp}, ${message}, ${nodeId})`);
}

// @ts-ignore
export function getMessages(chat: Chat): GSet<string> {
return chat.messages;
}

// @ts-ignore
export function merge(chat: Chat, other: Chat): void {
gset_merge(chat.messages, other.messages);
}

0 comments on commit 6efcdd3

Please sign in to comment.