@restatedev/restate-sdk 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -2
- package/dist/connection/buffered_connection.d.ts +14 -0
- package/dist/connection/buffered_connection.d.ts.map +1 -0
- package/dist/connection/buffered_connection.js +44 -0
- package/dist/connection/buffered_connection.js.map +1 -0
- package/dist/connection/embedded_connection.d.ts +2 -4
- package/dist/connection/embedded_connection.d.ts.map +1 -1
- package/dist/connection/embedded_connection.js +6 -25
- package/dist/connection/embedded_connection.js.map +1 -1
- package/dist/connection/http_connection.d.ts +1 -1
- package/dist/connection/http_connection.d.ts.map +1 -1
- package/dist/connection/http_connection.js +14 -14
- package/dist/connection/http_connection.js.map +1 -1
- package/dist/generated/proto/protocol.d.ts +52 -16
- package/dist/generated/proto/protocol.d.ts.map +1 -1
- package/dist/generated/proto/protocol.js +293 -74
- package/dist/generated/proto/protocol.js.map +1 -1
- package/dist/invocation.d.ts +12 -2
- package/dist/invocation.d.ts.map +1 -1
- package/dist/invocation.js +19 -3
- package/dist/invocation.js.map +1 -1
- package/dist/io/encoder.d.ts.map +1 -1
- package/dist/io/encoder.js +20 -9
- package/dist/io/encoder.js.map +1 -1
- package/dist/journal.d.ts +2 -1
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +15 -11
- package/dist/journal.js.map +1 -1
- package/dist/public_api.js +1 -2
- package/dist/public_api.js.map +1 -1
- package/dist/restate_context_impl.d.ts.map +1 -1
- package/dist/restate_context_impl.js +2 -2
- package/dist/restate_context_impl.js.map +1 -1
- package/dist/server/base_restate_server.d.ts +1 -1
- package/dist/server/base_restate_server.d.ts.map +1 -1
- package/dist/server/base_restate_server.js +6 -3
- package/dist/server/base_restate_server.js.map +1 -1
- package/dist/server/restate_lambda_handler.js +1 -1
- package/dist/server/restate_lambda_handler.js.map +1 -1
- package/dist/server/restate_server.d.ts +45 -39
- package/dist/server/restate_server.d.ts.map +1 -1
- package/dist/server/restate_server.js +42 -86
- package/dist/server/restate_server.js.map +1 -1
- package/dist/state_machine.d.ts +1 -1
- package/dist/state_machine.d.ts.map +1 -1
- package/dist/state_machine.js +27 -9
- package/dist/state_machine.js.map +1 -1
- package/dist/types/errors.d.ts +1 -1
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +8 -2
- package/dist/types/errors.js.map +1 -1
- package/dist/types/protocol.d.ts +5 -3
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +11 -1
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +7 -6
- package/dist/types/types.js.map +1 -1
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +26 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -109,6 +109,12 @@ Launch a sample program (requires no build)
|
|
|
109
109
|
npm run example
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
+
### Update the proto descriptors
|
|
113
|
+
|
|
114
|
+
```shell
|
|
115
|
+
npm run proto
|
|
116
|
+
```
|
|
117
|
+
|
|
112
118
|
### Testing end-to-end with Restate Runtime
|
|
113
119
|
|
|
114
120
|
This requires the [Docker Engine](https://docs.docker.com/engine/install/) to launch the Restate runtime for testing.
|
|
@@ -118,13 +124,13 @@ Start the runtime in a Docker container and tell Restate about the example servi
|
|
|
118
124
|
```shell
|
|
119
125
|
docker run --name restate_dev --rm --network=host docker.io/restatedev/restate:latest
|
|
120
126
|
|
|
121
|
-
curl -X POST http://localhost:9070/
|
|
127
|
+
curl -X POST http://localhost:9070/deployments -H 'content-type: application/json' -d '{"uri": "http://localhost:9080"}'
|
|
122
128
|
```
|
|
123
129
|
- On macOS:
|
|
124
130
|
```shell
|
|
125
131
|
docker run --name restate_dev --rm -p 9070:9070 -p 8080:8080 docker.io/restatedev/restate:latest
|
|
126
132
|
|
|
127
|
-
curl -X POST http://localhost:9070/
|
|
133
|
+
curl -X POST http://localhost:9070/deployments -H 'content-type: application/json' -d '{"uri": "http://host.docker.internal:9080"}'
|
|
128
134
|
```
|
|
129
135
|
|
|
130
136
|
|
|
@@ -135,6 +141,10 @@ curl -X POST http://localhost:8080/greeter/greet -H 'content-type: application/j
|
|
|
135
141
|
|
|
136
142
|
# Releasing the package
|
|
137
143
|
|
|
144
|
+
## Pre-release
|
|
145
|
+
|
|
146
|
+
Before release, make sure the `buf.lock` of the proto descriptors is updated. See [Update the proto descriptors](#update-the-proto-descriptors).
|
|
147
|
+
|
|
138
148
|
## Releasing via release-it
|
|
139
149
|
|
|
140
150
|
Releasing a new npm package from this repo requires:
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Message } from "../types/types";
|
|
3
|
+
import { Connection } from "./connection";
|
|
4
|
+
export declare class BufferedConnection implements Connection {
|
|
5
|
+
private readonly flushFn;
|
|
6
|
+
private queue;
|
|
7
|
+
private flushing;
|
|
8
|
+
constructor(flushFn: (buffer: Buffer) => Promise<void>);
|
|
9
|
+
send(msg: Message): Promise<void>;
|
|
10
|
+
end(): Promise<void>;
|
|
11
|
+
private scheduleFlush;
|
|
12
|
+
private flush;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=buffered_connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffered_connection.d.ts","sourceRoot":"","sources":["../../src/connection/buffered_connection.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,kBAAmB,YAAW,UAAU;IAIvC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAoC;gBAEvB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;IAEvE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAajC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpB,OAAO,CAAC,aAAa;YASP,KAAK;CASpB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BufferedConnection = void 0;
|
|
4
|
+
const encoder_1 = require("../io/encoder");
|
|
5
|
+
class BufferedConnection {
|
|
6
|
+
flushFn;
|
|
7
|
+
queue = [];
|
|
8
|
+
flushing = Promise.resolve();
|
|
9
|
+
constructor(flushFn) {
|
|
10
|
+
this.flushFn = flushFn;
|
|
11
|
+
}
|
|
12
|
+
send(msg) {
|
|
13
|
+
const len = this.queue.push(msg);
|
|
14
|
+
if (len === 1) {
|
|
15
|
+
// we are the first in line, therefore we schedule a flush,
|
|
16
|
+
// BUT we must wait for the previous flush to end.
|
|
17
|
+
this.flushing = this.flushing.then(() => this.scheduleFlush());
|
|
18
|
+
}
|
|
19
|
+
// we don't need to reschedule the `flush` here,
|
|
20
|
+
// because the flush happens anyway at the end of the current event loop iteration.
|
|
21
|
+
// tag along to the previously scheduled flush.
|
|
22
|
+
return this.flushing;
|
|
23
|
+
}
|
|
24
|
+
end() {
|
|
25
|
+
this.flushing = this.flushing.then(() => this.flush());
|
|
26
|
+
return this.flushing;
|
|
27
|
+
}
|
|
28
|
+
scheduleFlush() {
|
|
29
|
+
// schedule a flush at the end of the current event loop iteration.
|
|
30
|
+
return new Promise((resolve, reject) => setImmediate(() => {
|
|
31
|
+
this.flush().then(resolve).catch(reject);
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
async flush() {
|
|
35
|
+
if (this.queue.length === 0) {
|
|
36
|
+
return Promise.resolve();
|
|
37
|
+
}
|
|
38
|
+
const buffer = (0, encoder_1.encodeMessages)(this.queue);
|
|
39
|
+
this.queue = [];
|
|
40
|
+
return this.flushFn(buffer);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.BufferedConnection = BufferedConnection;
|
|
44
|
+
//# sourceMappingURL=buffered_connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffered_connection.js","sourceRoot":"","sources":["../../src/connection/buffered_connection.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAI/C,MAAa,kBAAkB;IAIA;IAHrB,KAAK,GAAc,EAAE,CAAC;IACtB,QAAQ,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEpD,YAA6B,OAA0C;QAA1C,YAAO,GAAP,OAAO,CAAmC;IAAG,CAAC;IAE3E,IAAI,CAAC,GAAY;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,2DAA2D;YAC3D,kDAAkD;YAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAChE;QACD,gDAAgD;QAChD,mFAAmF;QACnF,+CAA+C;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,GAAG;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,mEAAmE;QACnE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACrC,YAAY,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QACD,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,IAAI,CAAC,KAAK,CAAW,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AA1CD,gDA0CC"}
|
|
@@ -11,12 +11,10 @@ export declare class EmbeddedConnection implements Connection {
|
|
|
11
11
|
private readonly operationId;
|
|
12
12
|
private readonly streamId;
|
|
13
13
|
private readonly remote;
|
|
14
|
-
private
|
|
15
|
-
private flushing;
|
|
14
|
+
private buffered;
|
|
16
15
|
constructor(operationId: string, streamId: string, remote: RemoteContext);
|
|
17
16
|
send(msg: Message): Promise<void>;
|
|
18
17
|
end(): Promise<void>;
|
|
19
|
-
private
|
|
20
|
-
private flush;
|
|
18
|
+
private sendBuffer;
|
|
21
19
|
}
|
|
22
20
|
//# sourceMappingURL=embedded_connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_connection.d.ts","sourceRoot":"","sources":["../../src/connection/embedded_connection.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"embedded_connection.d.ts","sourceRoot":"","sources":["../../src/connection/embedded_connection.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,cAAe,SAAQ,KAAK;;CAIxC;AAED,qBAAa,+BAAgC,SAAQ,KAAK;;CAIzD;AAED,qBAAa,kBAAmB,YAAW,UAAU;IAIjD,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAqB;gBAGlB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa;IAKxC,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAIN,UAAU;CAczB"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.EmbeddedConnection = exports.InvocationAlreadyCompletedError = exports.FencedOffError = void 0;
|
|
14
|
-
const
|
|
14
|
+
const buffered_connection_1 = require("./buffered_connection");
|
|
15
15
|
class FencedOffError extends Error {
|
|
16
16
|
constructor() {
|
|
17
17
|
super("FencedOff");
|
|
@@ -28,39 +28,20 @@ class EmbeddedConnection {
|
|
|
28
28
|
operationId;
|
|
29
29
|
streamId;
|
|
30
30
|
remote;
|
|
31
|
-
|
|
32
|
-
flushing = Promise.resolve();
|
|
31
|
+
buffered;
|
|
33
32
|
constructor(operationId, streamId, remote) {
|
|
34
33
|
this.operationId = operationId;
|
|
35
34
|
this.streamId = streamId;
|
|
36
35
|
this.remote = remote;
|
|
36
|
+
this.buffered = new buffered_connection_1.BufferedConnection((buffer) => this.sendBuffer(buffer));
|
|
37
37
|
}
|
|
38
38
|
send(msg) {
|
|
39
|
-
|
|
40
|
-
if (len === 1) {
|
|
41
|
-
// we are the first in line, therefore we schedule a flush,
|
|
42
|
-
// BUT we must wait for the previous flush to end.
|
|
43
|
-
this.flushing = this.flushing.then(() => this.scheduleFlush());
|
|
44
|
-
}
|
|
45
|
-
// tag along to the previously scheduled flush.
|
|
46
|
-
return this.flushing;
|
|
39
|
+
return this.buffered.send(msg);
|
|
47
40
|
}
|
|
48
41
|
end() {
|
|
49
|
-
|
|
50
|
-
return this.flushing;
|
|
51
|
-
}
|
|
52
|
-
scheduleFlush() {
|
|
53
|
-
// schedule a flush at the end of the current event loop iteration.
|
|
54
|
-
return new Promise((resolve, reject) => setImmediate(() => {
|
|
55
|
-
this.flush().then(resolve).catch(reject);
|
|
56
|
-
}));
|
|
42
|
+
return this.buffered.end();
|
|
57
43
|
}
|
|
58
|
-
async
|
|
59
|
-
if (this.queue.length === 0) {
|
|
60
|
-
return Promise.resolve();
|
|
61
|
-
}
|
|
62
|
-
const buffer = (0, encoder_1.encodeMessages)(this.queue);
|
|
63
|
-
this.queue = [];
|
|
44
|
+
async sendBuffer(buffer) {
|
|
64
45
|
const res = await this.remote.send({
|
|
65
46
|
operationId: this.operationId,
|
|
66
47
|
streamId: this.streamId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_connection.js","sourceRoot":"","sources":["../../src/connection/embedded_connection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;
|
|
1
|
+
{"version":3,"file":"embedded_connection.js","sourceRoot":"","sources":["../../src/connection/embedded_connection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAIH,+DAA2D;AAG3D,MAAa,cAAe,SAAQ,KAAK;IACvC;QACE,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;CACF;AAJD,wCAIC;AAED,MAAa,+BAAgC,SAAQ,KAAK;IACxD;QACE,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;CACF;AAJD,0EAIC;AAED,MAAa,kBAAkB;IAIV;IACA;IACA;IALX,QAAQ,CAAqB;IAErC,YACmB,WAAmB,EACnB,QAAgB,EAChB,MAAqB;QAFrB,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAe;QAEtC,IAAI,CAAC,QAAQ,GAAG,IAAI,wCAAkB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,GAAY;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE;YACnC,MAAM,IAAI,cAAc,EAAE,CAAC;SAC5B;QACD,IAAI,GAAG,CAAC,mBAAmB,KAAK,SAAS,EAAE;YACzC,MAAM,IAAI,+BAA+B,EAAE,CAAC;SAC7C;IACH,CAAC;CACF;AAjCD,gDAiCC"}
|
|
@@ -31,11 +31,11 @@ export declare class RestateHttp2Connection implements Connection {
|
|
|
31
31
|
*/
|
|
32
32
|
static from(http2stream: stream.Duplex): RestateHttp2Connection;
|
|
33
33
|
private readonly sdkInput;
|
|
34
|
-
private readonly sdkOutput;
|
|
35
34
|
private currentConsumer;
|
|
36
35
|
private inputBuffer;
|
|
37
36
|
private consumerError?;
|
|
38
37
|
private consumerInputClosed;
|
|
38
|
+
private outputBuffer;
|
|
39
39
|
constructor(rawStream: stream.Duplex);
|
|
40
40
|
/**
|
|
41
41
|
* Pipes the messages from this connection to the given consumer. The consumer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http_connection.d.ts","sourceRoot":"","sources":["../../src/connection/http_connection.ts"],"names":[],"mappings":";AAWA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"http_connection.d.ts","sourceRoot":"","sources":["../../src/connection/http_connection.ts"],"names":[],"mappings":";AAWA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAQzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,sBAAuB,YAAW,UAAU;IAqB3C,OAAO,CAAC,QAAQ,CAAC,SAAS;IApBtC;;OAEG;WACW,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,sBAAsB;IAOtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAG3C,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAQ;IAC9B,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,CAAC,YAAY,CAAqB;gBAEZ,SAAS,EAAE,MAAM,CAAC,MAAM;IA+ErD;;;;;;;;OAQG;IACI,cAAc,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IA+B5D;;OAEG;IACI,qBAAqB,IAAI,IAAI;IAQpC;;;;;;;;;;;;OAYG;IACI,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAYlC"}
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.RestateHttp2Connection = void 0;
|
|
14
|
-
const encoder_1 = require("../io/encoder");
|
|
15
14
|
const decoder_1 = require("../io/decoder");
|
|
16
15
|
const logger_1 = require("../utils/logger");
|
|
17
16
|
const promises_1 = require("stream/promises");
|
|
17
|
+
const buffered_connection_1 = require("./buffered_connection");
|
|
18
18
|
// utility promise, for cases where we want to save allocation of an extra promise
|
|
19
19
|
const RESOLVED = Promise.resolve();
|
|
20
20
|
/**
|
|
@@ -50,18 +50,24 @@ class RestateHttp2Connection {
|
|
|
50
50
|
// --------------------------------------------------------------------------
|
|
51
51
|
// input as decoded messages
|
|
52
52
|
sdkInput;
|
|
53
|
-
// output as encoded bytes. we convert manually, not as transforms,
|
|
54
|
-
// to skip a layer of stream indirection
|
|
55
|
-
sdkOutput;
|
|
56
53
|
// consumer handling
|
|
57
54
|
currentConsumer = null;
|
|
58
55
|
inputBuffer = [];
|
|
59
56
|
consumerError;
|
|
60
57
|
consumerInputClosed = false;
|
|
58
|
+
outputBuffer;
|
|
61
59
|
constructor(rawStream) {
|
|
62
60
|
this.rawStream = rawStream;
|
|
63
61
|
this.sdkInput = rawStream.pipe((0, decoder_1.streamDecoder)());
|
|
64
|
-
this.
|
|
62
|
+
this.outputBuffer = new buffered_connection_1.BufferedConnection((buffer) => {
|
|
63
|
+
const hasMoreCapacity = rawStream.write(buffer);
|
|
64
|
+
if (hasMoreCapacity) {
|
|
65
|
+
return RESOLVED;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return new Promise((resolve) => rawStream.once("drain", resolve));
|
|
69
|
+
}
|
|
70
|
+
});
|
|
65
71
|
// remember and forward messages
|
|
66
72
|
this.sdkInput.on("data", (m) => {
|
|
67
73
|
// deliver message, if we have a consumer. otherwise buffer the message.
|
|
@@ -178,20 +184,14 @@ class RestateHttp2Connection {
|
|
|
178
184
|
* capacity again, so that at least the operations that await results will respect backpressure.
|
|
179
185
|
*/
|
|
180
186
|
send(msg) {
|
|
181
|
-
|
|
182
|
-
const hasMoreCapacity = this.sdkOutput.write(encodedMessage);
|
|
183
|
-
if (hasMoreCapacity) {
|
|
184
|
-
return RESOLVED;
|
|
185
|
-
}
|
|
186
|
-
return new Promise((resolve) => {
|
|
187
|
-
this.sdkOutput.once("drain", resolve);
|
|
188
|
-
});
|
|
187
|
+
return this.outputBuffer.send(msg);
|
|
189
188
|
}
|
|
190
189
|
/**
|
|
191
190
|
* Ends the stream, awaiting pending writes.
|
|
192
191
|
*/
|
|
193
192
|
async end() {
|
|
194
|
-
this.
|
|
193
|
+
await this.outputBuffer.end();
|
|
194
|
+
this.rawStream.end();
|
|
195
195
|
const options = {
|
|
196
196
|
error: true,
|
|
197
197
|
cleanup: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http_connection.js","sourceRoot":"","sources":["../../src/connection/http_connection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAGH,2CAA8C;
|
|
1
|
+
{"version":3,"file":"http_connection.js","sourceRoot":"","sources":["../../src/connection/http_connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,10 +25,7 @@ export interface StartMessage_StateEntry {
|
|
|
25
25
|
*/
|
|
26
26
|
value: Buffer;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Type: 0x0000 + 1
|
|
30
|
-
* Note: Acks to custom messages will have the `empty` field filled.
|
|
31
|
-
*/
|
|
28
|
+
/** Type: 0x0000 + 1 */
|
|
32
29
|
export interface CompletionMessage {
|
|
33
30
|
entryIndex: number;
|
|
34
31
|
empty?: Empty | undefined;
|
|
@@ -65,15 +62,28 @@ export interface ErrorMessage {
|
|
|
65
62
|
/** Contains a verbose error description, e.g. the exception stacktrace. */
|
|
66
63
|
description: string;
|
|
67
64
|
}
|
|
65
|
+
/** Type: 0x0000 + 4 */
|
|
66
|
+
export interface EntryAckMessage {
|
|
67
|
+
entryIndex: number;
|
|
68
|
+
}
|
|
68
69
|
/**
|
|
69
|
-
*
|
|
70
|
+
* Type: 0x0000 + 5
|
|
71
|
+
* Implementations MUST send this message when the invocation lifecycle ends.
|
|
72
|
+
*/
|
|
73
|
+
export interface EndMessage {
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Completable: Yes
|
|
77
|
+
* Fallible: No
|
|
70
78
|
* Type: 0x0400 + 0
|
|
71
79
|
*/
|
|
72
80
|
export interface PollInputStreamEntryMessage {
|
|
73
|
-
value
|
|
81
|
+
value?: Buffer | undefined;
|
|
82
|
+
failure?: Failure | undefined;
|
|
74
83
|
}
|
|
75
84
|
/**
|
|
76
|
-
*
|
|
85
|
+
* Completable: No
|
|
86
|
+
* Fallible: No
|
|
77
87
|
* Type: 0x0400 + 1
|
|
78
88
|
*/
|
|
79
89
|
export interface OutputStreamEntryMessage {
|
|
@@ -81,16 +91,19 @@ export interface OutputStreamEntryMessage {
|
|
|
81
91
|
failure?: Failure | undefined;
|
|
82
92
|
}
|
|
83
93
|
/**
|
|
84
|
-
*
|
|
94
|
+
* Completable: Yes
|
|
95
|
+
* Fallible: No
|
|
85
96
|
* Type: 0x0800 + 0
|
|
86
97
|
*/
|
|
87
98
|
export interface GetStateEntryMessage {
|
|
88
99
|
key: Buffer;
|
|
89
100
|
empty?: Empty | undefined;
|
|
90
101
|
value?: Buffer | undefined;
|
|
102
|
+
failure?: Failure | undefined;
|
|
91
103
|
}
|
|
92
104
|
/**
|
|
93
|
-
*
|
|
105
|
+
* Completable: No
|
|
106
|
+
* Fallible: No
|
|
94
107
|
* Type: 0x0800 + 1
|
|
95
108
|
*/
|
|
96
109
|
export interface SetStateEntryMessage {
|
|
@@ -98,14 +111,16 @@ export interface SetStateEntryMessage {
|
|
|
98
111
|
value: Buffer;
|
|
99
112
|
}
|
|
100
113
|
/**
|
|
101
|
-
*
|
|
114
|
+
* Completable: No
|
|
115
|
+
* Fallible: No
|
|
102
116
|
* Type: 0x0800 + 2
|
|
103
117
|
*/
|
|
104
118
|
export interface ClearStateEntryMessage {
|
|
105
119
|
key: Buffer;
|
|
106
120
|
}
|
|
107
121
|
/**
|
|
108
|
-
*
|
|
122
|
+
* Completable: Yes
|
|
123
|
+
* Fallible: No
|
|
109
124
|
* Type: 0x0C00 + 0
|
|
110
125
|
*/
|
|
111
126
|
export interface SleepEntryMessage {
|
|
@@ -114,10 +129,12 @@ export interface SleepEntryMessage {
|
|
|
114
129
|
* The time is set as duration since UNIX Epoch.
|
|
115
130
|
*/
|
|
116
131
|
wakeUpTime: number;
|
|
117
|
-
|
|
132
|
+
empty?: Empty | undefined;
|
|
133
|
+
failure?: Failure | undefined;
|
|
118
134
|
}
|
|
119
135
|
/**
|
|
120
|
-
*
|
|
136
|
+
* Completable: Yes
|
|
137
|
+
* Fallible: Yes
|
|
121
138
|
* Type: 0x0C00 + 1
|
|
122
139
|
*/
|
|
123
140
|
export interface InvokeEntryMessage {
|
|
@@ -128,7 +145,8 @@ export interface InvokeEntryMessage {
|
|
|
128
145
|
failure?: Failure | undefined;
|
|
129
146
|
}
|
|
130
147
|
/**
|
|
131
|
-
*
|
|
148
|
+
* Completable: No
|
|
149
|
+
* Fallible: Yes
|
|
132
150
|
* Type: 0x0C00 + 2
|
|
133
151
|
*/
|
|
134
152
|
export interface BackgroundInvokeEntryMessage {
|
|
@@ -144,7 +162,8 @@ export interface BackgroundInvokeEntryMessage {
|
|
|
144
162
|
invokeTime: number;
|
|
145
163
|
}
|
|
146
164
|
/**
|
|
147
|
-
*
|
|
165
|
+
* Completable: Yes
|
|
166
|
+
* Fallible: No
|
|
148
167
|
* Type: 0x0C00 + 3
|
|
149
168
|
* Awakeables are addressed by an identifier exposed to the user. See the spec for more details.
|
|
150
169
|
*/
|
|
@@ -153,7 +172,8 @@ export interface AwakeableEntryMessage {
|
|
|
153
172
|
failure?: Failure | undefined;
|
|
154
173
|
}
|
|
155
174
|
/**
|
|
156
|
-
*
|
|
175
|
+
* Completable: No
|
|
176
|
+
* Fallible: Yes
|
|
157
177
|
* Type: 0x0C00 + 4
|
|
158
178
|
*/
|
|
159
179
|
export interface CompleteAwakeableEntryMessage {
|
|
@@ -217,6 +237,22 @@ export declare const ErrorMessage: {
|
|
|
217
237
|
create(base?: DeepPartial<ErrorMessage>): ErrorMessage;
|
|
218
238
|
fromPartial(object: DeepPartial<ErrorMessage>): ErrorMessage;
|
|
219
239
|
};
|
|
240
|
+
export declare const EntryAckMessage: {
|
|
241
|
+
encode(message: EntryAckMessage, writer?: _m0.Writer): _m0.Writer;
|
|
242
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): EntryAckMessage;
|
|
243
|
+
fromJSON(object: any): EntryAckMessage;
|
|
244
|
+
toJSON(message: EntryAckMessage): unknown;
|
|
245
|
+
create(base?: DeepPartial<EntryAckMessage>): EntryAckMessage;
|
|
246
|
+
fromPartial(object: DeepPartial<EntryAckMessage>): EntryAckMessage;
|
|
247
|
+
};
|
|
248
|
+
export declare const EndMessage: {
|
|
249
|
+
encode(_: EndMessage, writer?: _m0.Writer): _m0.Writer;
|
|
250
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): EndMessage;
|
|
251
|
+
fromJSON(_: any): EndMessage;
|
|
252
|
+
toJSON(_: EndMessage): unknown;
|
|
253
|
+
create(base?: DeepPartial<EndMessage>): EndMessage;
|
|
254
|
+
fromPartial(_: DeepPartial<EndMessage>): EndMessage;
|
|
255
|
+
};
|
|
220
256
|
export declare const PollInputStreamEntryMessage: {
|
|
221
257
|
encode(message: PollInputStreamEntryMessage, writer?: _m0.Writer): _m0.Writer;
|
|
222
258
|
decode(input: _m0.Reader | Uint8Array, length?: number): PollInputStreamEntryMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/generated/proto/protocol.ts"],"names":[],"mappings":";AAEA,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAmC,MAAM,0BAA0B,CAAC;AAElF,eAAO,MAAM,eAAe,iCAAiC,CAAC;AAE9D,uBAAuB;AACvB,MAAM,WAAW,YAAY;IAC3B,qHAAqH;IACrH,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/generated/proto/protocol.ts"],"names":[],"mappings":"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"}
|