Skip to content

Commit 41d5f3e

Browse files
committed
fix: refine server adaptor api and fix a loro mem leak
1 parent 9c9b9a5 commit 41d5f3e

File tree

4 files changed

+7
-16
lines changed

4 files changed

+7
-16
lines changed

packages/loro-adaptors/src/server/server-loro-adaptor.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@ export class LoroServerAdaptor implements CrdtServerAdaptor {
2828
updates?: Uint8Array[];
2929
} {
3030
const doc = new LoroDoc();
31+
let serverVersion: undefined | VersionVector;
3132
try {
3233
if (documentData.length > 0) {
3334
doc.import(documentData);
3435
}
3536

36-
const serverVersion = doc.version();
37+
serverVersion = doc.version();
3738
let updates: Uint8Array[] | undefined;
3839

3940
if (clientVersion.length > 0) {
@@ -68,6 +69,7 @@ export class LoroServerAdaptor implements CrdtServerAdaptor {
6869
return { response, updates };
6970
} finally {
7071
doc.free();
72+
serverVersion?.free();
7173
}
7274
}
7375

@@ -135,20 +137,19 @@ export class LoroServerAdaptor implements CrdtServerAdaptor {
135137

136138
getVersion(documentData: Uint8Array): Uint8Array {
137139
const doc = new LoroDoc();
140+
let version: undefined | VersionVector;
138141
try {
139142
if (documentData.length > 0) {
140143
doc.import(documentData);
141144
}
142-
return doc.version().encode();
145+
version = doc.version();
146+
return version.encode();
143147
} finally {
144148
doc.free();
149+
version?.free();
145150
}
146151
}
147152

148-
getSize(documentData: Uint8Array): number {
149-
return documentData.length;
150-
}
151-
152153
merge(documents: Uint8Array[]): Uint8Array {
153154
const doc = new LoroDoc();
154155
try {

packages/loro-adaptors/src/server/server-loro-ephemeral-adaptor.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,6 @@ export class LoroEphemeralServerAdaptor implements CrdtServerAdaptor {
116116
return new Uint8Array();
117117
}
118118

119-
getSize(documentData: Uint8Array): number {
120-
return documentData.length;
121-
}
122-
123119
merge(documents: Uint8Array[]): Uint8Array {
124120
const store = new EphemeralStore(this.timeout);
125121
for (const data of documents) {

packages/loro-adaptors/src/server/server-yjs-awareness-adaptor.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,6 @@ export class YjsAwarenessServerAdaptor implements CrdtServerAdaptor {
9898
return new Uint8Array();
9999
}
100100

101-
getSize(documentData: Uint8Array): number {
102-
return documentData.length;
103-
}
104-
105101
merge(documents: Uint8Array[]): Uint8Array {
106102
let total = 0;
107103
for (const d of documents) total += d.length;

packages/loro-adaptors/src/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ export interface CrdtServerAdaptor {
8787

8888
getVersion(documentData: Uint8Array): Uint8Array;
8989

90-
getSize(documentData: Uint8Array): number;
91-
9290
merge(documents: Uint8Array[]): Uint8Array;
9391
}
9492

0 commit comments

Comments
 (0)