Skip to content

Commit b5397f8

Browse files
committed
syntax: improved variable names and docs
[ci skip]
1 parent 2a45022 commit b5397f8

10 files changed

Lines changed: 133 additions & 93 deletions

File tree

src/PolykeyAgent.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ type NetworkConfig = {
5757
clientHost?: Host;
5858
clientPort?: Port;
5959
maxReadBufferBytes?: number;
60-
idleTimeout?: number;
61-
pingInterval?: number;
62-
pingTimeout?: number;
60+
idleTimeoutTime?: number;
61+
pingIntervalTime?: number;
62+
pingTimeoutTime?: number;
6363
};
6464

6565
interface PolykeyAgent extends CreateDestroyStartStop {}
@@ -193,7 +193,7 @@ class PolykeyAgent {
193193
...config.defaults.nodeConnectionManagerConfig,
194194
...utils.filterEmptyObject(nodeConnectionManagerConfig),
195195
};
196-
const _networkConfig = {
196+
const networkConfig_ = {
197197
...config.defaults.networkConfig,
198198
...utils.filterEmptyObject(networkConfig),
199199
};
@@ -454,13 +454,13 @@ class PolykeyAgent {
454454
connectionCallback: (streamPair) =>
455455
rpcServerClient!.handleStream(streamPair, {}),
456456
fs,
457-
host: _networkConfig.clientHost,
458-
port: _networkConfig.clientPort,
457+
host: networkConfig_.clientHost,
458+
port: networkConfig_.clientPort,
459459
tlsConfig,
460-
maxReadBufferBytes: _networkConfig.maxReadBufferBytes,
461-
idleTimeout: _networkConfig.idleTimeout,
462-
pingInterval: _networkConfig.pingInterval,
463-
pingTimeout: _networkConfig.pingTimeout,
460+
maxReadableStreamBytes: networkConfig_.maxReadBufferBytes,
461+
connectionIdleTimeoutTime: networkConfig_.idleTimeout,
462+
pingIntervalTime: networkConfig_.pingIntervalTime,
463+
pingTimeoutTime: networkConfig_.pingTimeoutTime,
464464
logger: logger.getChild('WebSocketServer'),
465465
}));
466466
grpcServerAgent =

src/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ const config = {
102102
clientHost: '127.0.0.1' as Host,
103103
clientPort: 0 as Port,
104104
maxReadBufferBytes: 1_000_000_000, // About 1 GB
105-
pingInterval: 1_000, // 1 second
106-
pingTimeout: 10_000, // 10 seconds
105+
pingIntervalTime: 1_000, // 1 second
106+
pingTimeoutTime: 10_000, // 10 seconds
107107
},
108108
proxyConfig: {
109109
connConnectTime: 2000,

src/rpc/RPCClient.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,16 @@ class RPCClient<M extends ClientManifest> {
4242
* The middlewareFactory needs to be a function that creates a pair of
4343
* transform streams that convert `JSONRPCRequest` to `Uint8Array` on the forward
4444
* path and `Uint8Array` to `JSONRPCResponse` on the reverse path.
45-
* @param obj.defaultTimeout - default timeout to be used if none is provided
45+
* @param obj.streamKeepAliveTimeoutTime - Timeout time used if no timeout timer was provided when making a call.
46+
* Defaults to 60,000 milliseconds.
4647
* for a client call.
4748
* @param obj.logger
4849
*/
4950
static async createRPCClient<M extends ClientManifest>({
5051
manifest,
5152
streamFactory,
5253
middlewareFactory = middlewareUtils.defaultClientMiddlewareWrapper(),
53-
defaultTimeout = 60_000, // 1 minuet
54+
streamKeepAliveTimeoutTime = 60_000, // 1 minute
5455
logger = new Logger(this.name),
5556
}: {
5657
manifest: M;
@@ -61,15 +62,15 @@ class RPCClient<M extends ClientManifest> {
6162
JSONRPCResponse,
6263
Uint8Array
6364
>;
64-
defaultTimeout?: number;
65+
streamKeepAliveTimeoutTime?: number;
6566
logger?: Logger;
6667
}) {
6768
logger.info(`Creating ${this.name}`);
6869
const rpcClient = new this({
6970
manifest,
7071
streamFactory,
7172
middlewareFactory,
72-
defaultTimeout,
73+
streamKeepAliveTimeoutTime: streamKeepAliveTimeoutTime,
7374
logger,
7475
});
7576
logger.info(`Created ${this.name}`);
@@ -86,7 +87,7 @@ class RPCClient<M extends ClientManifest> {
8687
>;
8788
protected callerTypes: Record<string, HandlerType>;
8889
// Method proxies
89-
public readonly defaultTimeout: number;
90+
public readonly streamKeepAliveTimeoutTime: number;
9091
public readonly methodsProxy = new Proxy(
9192
{},
9293
{
@@ -115,7 +116,7 @@ class RPCClient<M extends ClientManifest> {
115116
manifest,
116117
streamFactory,
117118
middlewareFactory,
118-
defaultTimeout,
119+
streamKeepAliveTimeoutTime,
119120
logger,
120121
}: {
121122
manifest: M;
@@ -126,13 +127,13 @@ class RPCClient<M extends ClientManifest> {
126127
JSONRPCResponse,
127128
Uint8Array
128129
>;
129-
defaultTimeout: number;
130+
streamKeepAliveTimeoutTime: number;
130131
logger: Logger;
131132
}) {
132133
this.callerTypes = rpcUtils.getHandlerTypes(manifest);
133134
this.streamFactory = streamFactory;
134135
this.middlewareFactory = middlewareFactory;
135-
this.defaultTimeout = defaultTimeout;
136+
this.streamKeepAliveTimeoutTime = streamKeepAliveTimeoutTime;
136137
this.logger = logger;
137138
}
138139

@@ -275,7 +276,7 @@ class RPCClient<M extends ClientManifest> {
275276
const timer =
276277
ctx.timer ??
277278
new Timer({
278-
delay: this.defaultTimeout,
279+
delay: this.streamKeepAliveTimeoutTime,
279280
});
280281
const cleanUp = () => {
281282
// Clean up the timer and signal
@@ -377,7 +378,7 @@ class RPCClient<M extends ClientManifest> {
377378
const timer =
378379
ctx.timer ??
379380
new Timer({
380-
delay: this.defaultTimeout,
381+
delay: this.streamKeepAliveTimeoutTime,
381382
});
382383
// Ignore unhandled rejections
383384
const cleanUp = () => {

src/rpc/RPCServer.ts

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,21 @@ class RPCServer extends EventTarget {
5858
* path and `JSONRPCResponse` to `Uint8Array` on the reverse path.
5959
* @param obj.sensitive - If true, sanitises any rpc error messages of any
6060
* sensitive information.
61+
* @param obj.streamKeepAliveTimeoutTime - Time before a connection is cleaned up due to no activity. This is the
62+
* value used if the handler doesn't specify its own timeout time. This timeout is advisory and only results in a
63+
* signal sent to the handler. Stream is forced to end after the timeoutForceCloseTime. Defaults to 60,000
64+
* milliseconds.
65+
* @param obj.timeoutForceCloseTime - Time before the stream is forced to end after the initial timeout time.
66+
* The stream will be forced to close after this amount of time after the initial timeout. This is a grace period for
67+
* the handler to handle timeout before it is forced to end. Defaults to 2,000 milliseconds.
6168
* @param obj.logger
6269
*/
6370
public static async createRPCServer({
6471
manifest,
6572
middlewareFactory = middlewareUtils.defaultServerMiddlewareWrapper(),
6673
sensitive = false,
67-
defaultTimeout = 60_000, // 1 minuet
68-
forceEndDelay = 2_000, // 2 seconds
74+
streamKeepAliveTimeoutTime = 60_000, // 1 minute
75+
timeoutForceCloseTime = 2_000, // 2 seconds
6976
logger = new Logger(this.name),
7077
}: {
7178
manifest: ServerManifest;
@@ -76,17 +83,17 @@ class RPCServer extends EventTarget {
7683
JSONRPCResponse
7784
>;
7885
sensitive?: boolean;
79-
defaultTimeout?: number;
80-
forceEndDelay?: number;
86+
streamKeepAliveTimeoutTime?: number;
87+
timeoutForceCloseTime?: number;
8188
logger?: Logger;
8289
}): Promise<RPCServer> {
8390
logger.info(`Creating ${this.name}`);
8491
const rpcServer = new this({
8592
manifest,
8693
middlewareFactory,
8794
sensitive,
88-
defaultTimeout,
89-
forceEndDelay,
95+
streamKeepAliveTimeoutTime: streamKeepAliveTimeoutTime,
96+
timeoutForceCloseTime: timeoutForceCloseTime,
9097
logger,
9198
});
9299
logger.info(`Created ${this.name}`);
@@ -96,8 +103,8 @@ class RPCServer extends EventTarget {
96103
protected logger: Logger;
97104
protected handlerMap: Map<string, RawHandlerImplementation> = new Map();
98105
protected defaultTimeoutMap: Map<string, number | undefined> = new Map();
99-
protected defaultTimeout: number;
100-
protected forceEndDelay: number;
106+
protected streamKeepAliveTimeoutTime: number;
107+
protected timeoutForceCloseTime: number;
101108
protected activeStreams: Set<PromiseCancellable<void>> = new Set();
102109
protected sensitive: boolean;
103110
protected middlewareFactory: MiddlewareFactory<
@@ -111,8 +118,8 @@ class RPCServer extends EventTarget {
111118
manifest,
112119
middlewareFactory,
113120
sensitive,
114-
defaultTimeout = 60_000, // 1 minuet
115-
forceEndDelay = 2_000, // 2 seconds
121+
streamKeepAliveTimeoutTime = 60_000, // 1 minuet
122+
timeoutForceCloseTime = 2_000, // 2 seconds
116123
logger,
117124
}: {
118125
manifest: ServerManifest;
@@ -122,8 +129,8 @@ class RPCServer extends EventTarget {
122129
Uint8Array,
123130
JSONRPCResponseResult
124131
>;
125-
defaultTimeout?: number;
126-
forceEndDelay?: number;
132+
streamKeepAliveTimeoutTime?: number;
133+
timeoutForceCloseTime?: number;
127134
sensitive: boolean;
128135
logger: Logger;
129136
}) {
@@ -181,8 +188,8 @@ class RPCServer extends EventTarget {
181188
}
182189
this.middlewareFactory = middlewareFactory;
183190
this.sensitive = sensitive;
184-
this.defaultTimeout = defaultTimeout;
185-
this.forceEndDelay = forceEndDelay;
191+
this.streamKeepAliveTimeoutTime = streamKeepAliveTimeoutTime;
192+
this.timeoutForceCloseTime = timeoutForceCloseTime;
186193
this.logger = logger;
187194
}
188195

@@ -406,13 +413,13 @@ class RPCServer extends EventTarget {
406413
const forceStreamEndController = new AbortController();
407414
// Setting up timeout timer logic
408415
const timer = new Timer({
409-
delay: this.defaultTimeout,
416+
delay: this.streamKeepAliveTimeoutTime,
410417
handler: (signal) => {
411418
abortController.abort(new rpcErrors.ErrorRpcTimedOut());
412419
if (signal.aborted) return;
413420
// Grace timer for force ending stream
414421
const graceTimer = new Timer({
415-
delay: this.forceEndDelay,
422+
delay: this.timeoutForceCloseTime,
416423
handler: () => {
417424
forceStreamEndController.abort();
418425
},
@@ -489,7 +496,7 @@ class RPCServer extends EventTarget {
489496
}
490497
// Setting up Timeout logic
491498
const timeout = this.defaultTimeoutMap.get(method);
492-
if (timeout != null && timeout < this.defaultTimeout) {
499+
if (timeout != null && timeout < this.streamKeepAliveTimeoutTime) {
493500
// Reset timeout with new delay if it is less than the default
494501
timer.reset(timeout);
495502
} else {

src/websockets/WebSocketClient.ts

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,37 @@ import { promise } from '../utils';
1919
interface WebSocketClient extends createDestroy.CreateDestroy {}
2020
@createDestroy.CreateDestroy()
2121
class WebSocketClient {
22+
/**
23+
* @param obj
24+
* @param obj.host - Target host address to connect to
25+
* @param obj.port - Target port to connect to
26+
* @param obj.expectedNodeIds - Expected NodeIds you are trying to connect to. Will validate the cert chain of the
27+
* sever. If none of these NodeIDs are found the connection will be rejected.
28+
* @param obj.connectionTimeoutTime - Timeout time used when attempting the connection.
29+
* Default is Infinity milliseconds.
30+
* @param obj.pingIntervalTime - Time between pings for checking connection health and keep alive.
31+
* Default is 1,000 milliseconds.
32+
* @param obj.pingTimeoutTime - Time before connection is cleaned up after no ping responses.
33+
* Default is 10,000 milliseconds.
34+
* @param obj.maxReadableStreamBytes - The number of bytes the readable stream will buffer until pausing.
35+
* @param obj.logger
36+
*/
2237
static async createWebSocketClient({
2338
host,
2439
port,
2540
expectedNodeIds,
26-
connectionTimeout,
27-
pingInterval = 1000,
28-
pingTimeout = 10000,
29-
maxReadableStreamBytes = 1000, // About 1kB
41+
connectionTimeoutTime = Infinity,
42+
pingIntervalTime = 1_000,
43+
pingTimeoutTime = 10_000,
44+
maxReadableStreamBytes = 1_000, // About 1kB
3045
logger = new Logger(this.name),
3146
}: {
3247
host: string;
3348
port: number;
3449
expectedNodeIds: Array<NodeId>;
35-
connectionTimeout?: number;
36-
pingInterval?: number;
37-
pingTimeout?: number;
50+
connectionTimeoutTime?: number;
51+
pingIntervalTime?: number;
52+
pingTimeoutTime?: number;
3853
maxReadableStreamBytes?: number;
3954
logger?: Logger;
4055
}): Promise<WebSocketClient> {
@@ -45,9 +60,9 @@ class WebSocketClient {
4560
port,
4661
maxReadableStreamBytes,
4762
expectedNodeIds,
48-
connectionTimeout ?? Infinity,
49-
pingInterval,
50-
pingTimeout,
63+
connectionTimeoutTime,
64+
pingIntervalTime,
65+
pingTimeoutTime,
5166
);
5267
logger.info(`Created ${this.name}`);
5368
return clientClient;
@@ -62,9 +77,9 @@ class WebSocketClient {
6277
protected port: number,
6378
protected maxReadableStreamBytes: number,
6479
protected expectedNodeIds: Array<NodeId>,
65-
protected connectionTimeout: number,
66-
protected pingInterval: number,
67-
protected pingTimeout: number,
80+
protected connectionTimeoutTime: number,
81+
protected pingIntervalTime: number,
82+
protected pingTimeoutTime: number,
6883
) {
6984
if (Validator.isValidIPv4String(host)[0]) {
7085
this.host = host;
@@ -113,7 +128,7 @@ class WebSocketClient {
113128
const timer =
114129
ctx.timer ??
115130
new Timer({
116-
delay: this.connectionTimeout,
131+
delay: this.connectionTimeoutTime,
117132
});
118133
void timer.catch(() => {});
119134
void timer
@@ -204,8 +219,8 @@ class WebSocketClient {
204219
const webSocketStreamClient = new WebSocketStreamClientInternal(
205220
ws,
206221
this.maxReadableStreamBytes,
207-
this.pingInterval,
208-
this.pingTimeout,
222+
this.pingIntervalTime,
223+
this.pingTimeoutTime,
209224
this.logger,
210225
);
211226
const abortStream = () => {

0 commit comments

Comments
 (0)