@masuidrive/procman 0.1.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/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/src/cli/commands/clear-log.d.ts +10 -0
- package/dist/src/cli/commands/clear-log.d.ts.map +1 -0
- package/dist/src/cli/commands/clear-log.js +77 -0
- package/dist/src/cli/commands/clear-log.js.map +1 -0
- package/dist/src/cli/commands/exit.d.ts +10 -0
- package/dist/src/cli/commands/exit.d.ts.map +1 -0
- package/dist/src/cli/commands/exit.js +65 -0
- package/dist/src/cli/commands/exit.js.map +1 -0
- package/dist/src/cli/commands/help.d.ts +10 -0
- package/dist/src/cli/commands/help.d.ts.map +1 -0
- package/dist/src/cli/commands/help.js +340 -0
- package/dist/src/cli/commands/help.js.map +1 -0
- package/dist/src/cli/commands/list.d.ts +11 -0
- package/dist/src/cli/commands/list.d.ts.map +1 -0
- package/dist/src/cli/commands/list.js +130 -0
- package/dist/src/cli/commands/list.js.map +1 -0
- package/dist/src/cli/commands/load.d.ts +11 -0
- package/dist/src/cli/commands/load.d.ts.map +1 -0
- package/dist/src/cli/commands/load.js +250 -0
- package/dist/src/cli/commands/load.js.map +1 -0
- package/dist/src/cli/commands/log.d.ts +18 -0
- package/dist/src/cli/commands/log.d.ts.map +1 -0
- package/dist/src/cli/commands/log.js +282 -0
- package/dist/src/cli/commands/log.js.map +1 -0
- package/dist/src/cli/commands/restart.d.ts +11 -0
- package/dist/src/cli/commands/restart.d.ts.map +1 -0
- package/dist/src/cli/commands/restart.js +99 -0
- package/dist/src/cli/commands/restart.js.map +1 -0
- package/dist/src/cli/commands/start.d.ts +11 -0
- package/dist/src/cli/commands/start.d.ts.map +1 -0
- package/dist/src/cli/commands/start.js +105 -0
- package/dist/src/cli/commands/start.js.map +1 -0
- package/dist/src/cli/commands/stop.d.ts +12 -0
- package/dist/src/cli/commands/stop.d.ts.map +1 -0
- package/dist/src/cli/commands/stop.js +105 -0
- package/dist/src/cli/commands/stop.js.map +1 -0
- package/dist/src/cli/index.d.ts +3 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +28 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/parser.d.ts +14 -0
- package/dist/src/cli/parser.d.ts.map +1 -0
- package/dist/src/cli/parser.js +131 -0
- package/dist/src/cli/parser.js.map +1 -0
- package/dist/src/cli/signal-handler.d.ts +51 -0
- package/dist/src/cli/signal-handler.d.ts.map +1 -0
- package/dist/src/cli/signal-handler.js +129 -0
- package/dist/src/cli/signal-handler.js.map +1 -0
- package/dist/src/cli/utils/error-handler.d.ts +39 -0
- package/dist/src/cli/utils/error-handler.d.ts.map +1 -0
- package/dist/src/cli/utils/error-handler.js +200 -0
- package/dist/src/cli/utils/error-handler.js.map +1 -0
- package/dist/src/cli/utils/error-utils.d.ts +16 -0
- package/dist/src/cli/utils/error-utils.d.ts.map +1 -0
- package/dist/src/cli/utils/error-utils.js +48 -0
- package/dist/src/cli/utils/error-utils.js.map +1 -0
- package/dist/src/cli/utils/ipc-client.d.ts +80 -0
- package/dist/src/cli/utils/ipc-client.d.ts.map +1 -0
- package/dist/src/cli/utils/ipc-client.js +275 -0
- package/dist/src/cli/utils/ipc-client.js.map +1 -0
- package/dist/src/config/config-loader.d.ts +74 -0
- package/dist/src/config/config-loader.d.ts.map +1 -0
- package/dist/src/config/config-loader.js +229 -0
- package/dist/src/config/config-loader.js.map +1 -0
- package/dist/src/config/config-normalizer.d.ts +135 -0
- package/dist/src/config/config-normalizer.d.ts.map +1 -0
- package/dist/src/config/config-normalizer.js +309 -0
- package/dist/src/config/config-normalizer.js.map +1 -0
- package/dist/src/config/config-reporter.d.ts +183 -0
- package/dist/src/config/config-reporter.d.ts.map +1 -0
- package/dist/src/config/config-reporter.js +311 -0
- package/dist/src/config/config-reporter.js.map +1 -0
- package/dist/src/config/config-validator.d.ts +163 -0
- package/dist/src/config/config-validator.d.ts.map +1 -0
- package/dist/src/config/config-validator.js +489 -0
- package/dist/src/config/config-validator.js.map +1 -0
- package/dist/src/config/config-watcher.d.ts +161 -0
- package/dist/src/config/config-watcher.d.ts.map +1 -0
- package/dist/src/config/config-watcher.js +245 -0
- package/dist/src/config/config-watcher.js.map +1 -0
- package/dist/src/config/index.d.ts +36 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +41 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/secure-config-loader.d.ts +77 -0
- package/dist/src/config/secure-config-loader.d.ts.map +1 -0
- package/dist/src/config/secure-config-loader.js +326 -0
- package/dist/src/config/secure-config-loader.js.map +1 -0
- package/dist/src/daemon/base-socket-connection.d.ts +66 -0
- package/dist/src/daemon/base-socket-connection.d.ts.map +1 -0
- package/dist/src/daemon/base-socket-connection.js +192 -0
- package/dist/src/daemon/base-socket-connection.js.map +1 -0
- package/dist/src/daemon/component-manager.d.ts +180 -0
- package/dist/src/daemon/component-manager.d.ts.map +1 -0
- package/dist/src/daemon/component-manager.js +794 -0
- package/dist/src/daemon/component-manager.js.map +1 -0
- package/dist/src/daemon/crash-recovery.d.ts +71 -0
- package/dist/src/daemon/crash-recovery.d.ts.map +1 -0
- package/dist/src/daemon/crash-recovery.js +282 -0
- package/dist/src/daemon/crash-recovery.js.map +1 -0
- package/dist/src/daemon/daemon-main.d.ts +18 -0
- package/dist/src/daemon/daemon-main.d.ts.map +1 -0
- package/dist/src/daemon/daemon-main.js +160 -0
- package/dist/src/daemon/daemon-main.js.map +1 -0
- package/dist/src/daemon/daemon-state-manager.d.ts +111 -0
- package/dist/src/daemon/daemon-state-manager.d.ts.map +1 -0
- package/dist/src/daemon/daemon-state-manager.js +194 -0
- package/dist/src/daemon/daemon-state-manager.js.map +1 -0
- package/dist/src/daemon/data-directory.d.ts +51 -0
- package/dist/src/daemon/data-directory.d.ts.map +1 -0
- package/dist/src/daemon/data-directory.js +136 -0
- package/dist/src/daemon/data-directory.js.map +1 -0
- package/dist/src/daemon/index.d.ts +20 -0
- package/dist/src/daemon/index.d.ts.map +1 -0
- package/dist/src/daemon/index.js +24 -0
- package/dist/src/daemon/index.js.map +1 -0
- package/dist/src/daemon/ipc-client-base.d.ts +153 -0
- package/dist/src/daemon/ipc-client-base.d.ts.map +1 -0
- package/dist/src/daemon/ipc-client-base.js +476 -0
- package/dist/src/daemon/ipc-client-base.js.map +1 -0
- package/dist/src/daemon/ipc-command-handler.d.ts +107 -0
- package/dist/src/daemon/ipc-command-handler.d.ts.map +1 -0
- package/dist/src/daemon/ipc-command-handler.js +483 -0
- package/dist/src/daemon/ipc-command-handler.js.map +1 -0
- package/dist/src/daemon/ipc-factory.d.ts +92 -0
- package/dist/src/daemon/ipc-factory.d.ts.map +1 -0
- package/dist/src/daemon/ipc-factory.js +210 -0
- package/dist/src/daemon/ipc-factory.js.map +1 -0
- package/dist/src/daemon/ipc-server-base.d.ts +158 -0
- package/dist/src/daemon/ipc-server-base.d.ts.map +1 -0
- package/dist/src/daemon/ipc-server-base.js +491 -0
- package/dist/src/daemon/ipc-server-base.js.map +1 -0
- package/dist/src/daemon/message-protocol.d.ts +132 -0
- package/dist/src/daemon/message-protocol.d.ts.map +1 -0
- package/dist/src/daemon/message-protocol.js +252 -0
- package/dist/src/daemon/message-protocol.js.map +1 -0
- package/dist/src/daemon/named-pipe-client.d.ts +61 -0
- package/dist/src/daemon/named-pipe-client.d.ts.map +1 -0
- package/dist/src/daemon/named-pipe-client.js +221 -0
- package/dist/src/daemon/named-pipe-client.js.map +1 -0
- package/dist/src/daemon/named-pipe-server.d.ts +40 -0
- package/dist/src/daemon/named-pipe-server.d.ts.map +1 -0
- package/dist/src/daemon/named-pipe-server.js +102 -0
- package/dist/src/daemon/named-pipe-server.js.map +1 -0
- package/dist/src/daemon/orphan-detector.d.ts +66 -0
- package/dist/src/daemon/orphan-detector.d.ts.map +1 -0
- package/dist/src/daemon/orphan-detector.js +208 -0
- package/dist/src/daemon/orphan-detector.js.map +1 -0
- package/dist/src/daemon/pid-manager.d.ts +49 -0
- package/dist/src/daemon/pid-manager.d.ts.map +1 -0
- package/dist/src/daemon/pid-manager.js +110 -0
- package/dist/src/daemon/pid-manager.js.map +1 -0
- package/dist/src/daemon/procman-daemon.d.ts +188 -0
- package/dist/src/daemon/procman-daemon.d.ts.map +1 -0
- package/dist/src/daemon/procman-daemon.js +802 -0
- package/dist/src/daemon/procman-daemon.js.map +1 -0
- package/dist/src/daemon/reconnection-system.d.ts +113 -0
- package/dist/src/daemon/reconnection-system.d.ts.map +1 -0
- package/dist/src/daemon/reconnection-system.js +223 -0
- package/dist/src/daemon/reconnection-system.js.map +1 -0
- package/dist/src/daemon/resource-manager.d.ts +204 -0
- package/dist/src/daemon/resource-manager.d.ts.map +1 -0
- package/dist/src/daemon/resource-manager.js +423 -0
- package/dist/src/daemon/resource-manager.js.map +1 -0
- package/dist/src/daemon/signal-handler.d.ts +58 -0
- package/dist/src/daemon/signal-handler.d.ts.map +1 -0
- package/dist/src/daemon/signal-handler.js +142 -0
- package/dist/src/daemon/signal-handler.js.map +1 -0
- package/dist/src/daemon/simple-resource-manager.d.ts +95 -0
- package/dist/src/daemon/simple-resource-manager.d.ts.map +1 -0
- package/dist/src/daemon/simple-resource-manager.js +180 -0
- package/dist/src/daemon/simple-resource-manager.js.map +1 -0
- package/dist/src/daemon/unix-socket-client.d.ts +69 -0
- package/dist/src/daemon/unix-socket-client.d.ts.map +1 -0
- package/dist/src/daemon/unix-socket-client.js +313 -0
- package/dist/src/daemon/unix-socket-client.js.map +1 -0
- package/dist/src/daemon/unix-socket-server.d.ts +61 -0
- package/dist/src/daemon/unix-socket-server.d.ts.map +1 -0
- package/dist/src/daemon/unix-socket-server.js +262 -0
- package/dist/src/daemon/unix-socket-server.js.map +1 -0
- package/dist/src/daemon/zombie-reaper.d.ts +83 -0
- package/dist/src/daemon/zombie-reaper.d.ts.map +1 -0
- package/dist/src/daemon/zombie-reaper.js +278 -0
- package/dist/src/daemon/zombie-reaper.js.map +1 -0
- package/dist/src/process-manager/index.d.ts +13 -0
- package/dist/src/process-manager/index.d.ts.map +1 -0
- package/dist/src/process-manager/index.js +11 -0
- package/dist/src/process-manager/index.js.map +1 -0
- package/dist/src/process-manager/interfaces/index.d.ts +31 -0
- package/dist/src/process-manager/interfaces/index.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/index.js +14 -0
- package/dist/src/process-manager/interfaces/index.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-group.d.ts +200 -0
- package/dist/src/process-manager/interfaces/process-group.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-group.js +10 -0
- package/dist/src/process-manager/interfaces/process-group.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.d.ts +97 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.js +10 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-monitor.d.ts +118 -0
- package/dist/src/process-manager/interfaces/process-monitor.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-monitor.js +10 -0
- package/dist/src/process-manager/interfaces/process-monitor.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-persistence.d.ts +125 -0
- package/dist/src/process-manager/interfaces/process-persistence.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-persistence.js +10 -0
- package/dist/src/process-manager/interfaces/process-persistence.js.map +1 -0
- package/dist/src/process-manager/managed-process-info.d.ts +307 -0
- package/dist/src/process-manager/managed-process-info.d.ts.map +1 -0
- package/dist/src/process-manager/managed-process-info.js +650 -0
- package/dist/src/process-manager/managed-process-info.js.map +1 -0
- package/dist/src/process-manager/process-group-manager.d.ts +103 -0
- package/dist/src/process-manager/process-group-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-group-manager.js +400 -0
- package/dist/src/process-manager/process-group-manager.js.map +1 -0
- package/dist/src/process-manager/process-lifecycle-manager.d.ts +68 -0
- package/dist/src/process-manager/process-lifecycle-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-lifecycle-manager.js +372 -0
- package/dist/src/process-manager/process-lifecycle-manager.js.map +1 -0
- package/dist/src/process-manager/process-manager.d.ts +296 -0
- package/dist/src/process-manager/process-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-manager.js +659 -0
- package/dist/src/process-manager/process-manager.js.map +1 -0
- package/dist/src/process-manager/process-monitor.d.ts +95 -0
- package/dist/src/process-manager/process-monitor.d.ts.map +1 -0
- package/dist/src/process-manager/process-monitor.js +357 -0
- package/dist/src/process-manager/process-monitor.js.map +1 -0
- package/dist/src/process-manager/process-persistence.d.ts +68 -0
- package/dist/src/process-manager/process-persistence.d.ts.map +1 -0
- package/dist/src/process-manager/process-persistence.js +364 -0
- package/dist/src/process-manager/process-persistence.js.map +1 -0
- package/dist/src/process-manager/utils/mutex.d.ts +82 -0
- package/dist/src/process-manager/utils/mutex.d.ts.map +1 -0
- package/dist/src/process-manager/utils/mutex.js +172 -0
- package/dist/src/process-manager/utils/mutex.js.map +1 -0
- package/dist/src/services/index.d.ts +8 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +8 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/log-manager-config.d.ts +65 -0
- package/dist/src/services/log-manager-config.d.ts.map +1 -0
- package/dist/src/services/log-manager-config.js +145 -0
- package/dist/src/services/log-manager-config.js.map +1 -0
- package/dist/src/services/log-manager-factory.d.ts +134 -0
- package/dist/src/services/log-manager-factory.d.ts.map +1 -0
- package/dist/src/services/log-manager-factory.js +203 -0
- package/dist/src/services/log-manager-factory.js.map +1 -0
- package/dist/src/services/log-manager.d.ts +170 -0
- package/dist/src/services/log-manager.d.ts.map +1 -0
- package/dist/src/services/log-manager.js +1199 -0
- package/dist/src/services/log-manager.js.map +1 -0
- package/dist/src/services/log-path-validator.d.ts +121 -0
- package/dist/src/services/log-path-validator.d.ts.map +1 -0
- package/dist/src/services/log-path-validator.js +302 -0
- package/dist/src/services/log-path-validator.js.map +1 -0
- package/dist/src/services/process-log-integration.d.ts +62 -0
- package/dist/src/services/process-log-integration.d.ts.map +1 -0
- package/dist/src/services/process-log-integration.js +157 -0
- package/dist/src/services/process-log-integration.js.map +1 -0
- package/dist/src/shared/config.d.ts +67 -0
- package/dist/src/shared/config.d.ts.map +1 -0
- package/dist/src/shared/config.js +92 -0
- package/dist/src/shared/config.js.map +1 -0
- package/dist/src/shared/constants-streaming.d.ts +39 -0
- package/dist/src/shared/constants-streaming.d.ts.map +1 -0
- package/dist/src/shared/constants-streaming.js +39 -0
- package/dist/src/shared/constants-streaming.js.map +1 -0
- package/dist/src/shared/constants.d.ts +60 -0
- package/dist/src/shared/constants.d.ts.map +1 -0
- package/dist/src/shared/constants.js +71 -0
- package/dist/src/shared/constants.js.map +1 -0
- package/dist/src/shared/errors.d.ts +70 -0
- package/dist/src/shared/errors.d.ts.map +1 -0
- package/dist/src/shared/errors.js +101 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/index.d.ts +14 -0
- package/dist/src/shared/index.d.ts.map +1 -0
- package/dist/src/shared/index.js +22 -0
- package/dist/src/shared/index.js.map +1 -0
- package/dist/src/shared/ipc.d.ts +402 -0
- package/dist/src/shared/ipc.d.ts.map +1 -0
- package/dist/src/shared/ipc.js +85 -0
- package/dist/src/shared/ipc.js.map +1 -0
- package/dist/src/shared/logger.d.ts +38 -0
- package/dist/src/shared/logger.d.ts.map +1 -0
- package/dist/src/shared/logger.js +139 -0
- package/dist/src/shared/logger.js.map +1 -0
- package/dist/src/shared/logs.d.ts +53 -0
- package/dist/src/shared/logs.d.ts.map +1 -0
- package/dist/src/shared/logs.js +26 -0
- package/dist/src/shared/logs.js.map +1 -0
- package/dist/src/shared/process.d.ts +102 -0
- package/dist/src/shared/process.d.ts.map +1 -0
- package/dist/src/shared/process.js +55 -0
- package/dist/src/shared/process.js.map +1 -0
- package/dist/src/shared/types.d.ts +15 -0
- package/dist/src/shared/types.d.ts.map +1 -0
- package/dist/src/shared/types.js +8 -0
- package/dist/src/shared/types.js.map +1 -0
- package/dist/src/types/index.d.ts +19 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +5 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/event-cleanup.d.ts +30 -0
- package/dist/src/utils/event-cleanup.d.ts.map +1 -0
- package/dist/src/utils/event-cleanup.js +32 -0
- package/dist/src/utils/event-cleanup.js.map +1 -0
- package/dist/src/utils/memory/memory-monitor.d.ts +126 -0
- package/dist/src/utils/memory/memory-monitor.d.ts.map +1 -0
- package/dist/src/utils/memory/memory-monitor.js +246 -0
- package/dist/src/utils/memory/memory-monitor.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPC Message Protocol Implementation
|
|
3
|
+
*
|
|
4
|
+
* Handles serialization, deserialization, and proper parsing of IPC messages.
|
|
5
|
+
* Addresses the PoC issue with consecutive message parsing by implementing
|
|
6
|
+
* proper message framing and delimiter handling.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Message delimiter used to separate messages in the stream
|
|
10
|
+
*/
|
|
11
|
+
export const MESSAGE_DELIMITER = '\n';
|
|
12
|
+
/**
|
|
13
|
+
* Maximum message size in bytes (1MB)
|
|
14
|
+
*/
|
|
15
|
+
export const MAX_MESSAGE_SIZE = 1024 * 1024;
|
|
16
|
+
/**
|
|
17
|
+
* Message buffer for handling partial messages
|
|
18
|
+
*/
|
|
19
|
+
export class MessageBuffer {
|
|
20
|
+
buffer = '';
|
|
21
|
+
delimiter;
|
|
22
|
+
maxSize;
|
|
23
|
+
constructor(delimiter = MESSAGE_DELIMITER, maxSize = MAX_MESSAGE_SIZE) {
|
|
24
|
+
this.delimiter = delimiter;
|
|
25
|
+
this.maxSize = maxSize;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add data to the buffer and extract complete messages
|
|
29
|
+
*/
|
|
30
|
+
push(data) {
|
|
31
|
+
const text = typeof data === 'string' ? data : data.toString('utf8');
|
|
32
|
+
this.buffer += text;
|
|
33
|
+
const messages = [];
|
|
34
|
+
this.extractDelimitedMessages(messages);
|
|
35
|
+
// Check buffer size to prevent memory issues
|
|
36
|
+
if (this.buffer.length > this.maxSize) {
|
|
37
|
+
this.buffer = '';
|
|
38
|
+
throw new Error(`Message buffer exceeded maximum size: ${this.maxSize} bytes`);
|
|
39
|
+
}
|
|
40
|
+
return messages;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Extract messages using delimiter-based framing
|
|
44
|
+
*/
|
|
45
|
+
extractDelimitedMessages(messages) {
|
|
46
|
+
const parts = this.buffer.split(this.delimiter);
|
|
47
|
+
// Keep the last part as it might be incomplete
|
|
48
|
+
this.buffer = parts.pop() || '';
|
|
49
|
+
for (const part of parts) {
|
|
50
|
+
const trimmed = part.trim();
|
|
51
|
+
if (trimmed) {
|
|
52
|
+
try {
|
|
53
|
+
const message = this.parseMessage(trimmed);
|
|
54
|
+
if (message) {
|
|
55
|
+
messages.push(message);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Try to handle concatenated JSON objects
|
|
60
|
+
this.parseConcatenatedJSON(trimmed, messages);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse a single message from text
|
|
67
|
+
*/
|
|
68
|
+
parseMessage(text) {
|
|
69
|
+
try {
|
|
70
|
+
const parsed = JSON.parse(text);
|
|
71
|
+
// Validate basic IPC message structure
|
|
72
|
+
if (this.isValidIPCMessage(parsed)) {
|
|
73
|
+
return parsed;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new Error(`Failed to parse JSON message: ${error}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Handle concatenated JSON objects in a single string
|
|
83
|
+
* This addresses the PoC issue with consecutive message parsing
|
|
84
|
+
*/
|
|
85
|
+
parseConcatenatedJSON(text, messages) {
|
|
86
|
+
// Simple approach: match JSON objects with balanced braces
|
|
87
|
+
const jsonRegex = /\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/g;
|
|
88
|
+
const matches = text.match(jsonRegex) || [];
|
|
89
|
+
for (const match of matches) {
|
|
90
|
+
try {
|
|
91
|
+
const message = this.parseMessage(match.trim());
|
|
92
|
+
if (message)
|
|
93
|
+
messages.push(message);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.warn(`Failed to parse JSON: ${error instanceof Error ? error.message : String(error)}`, {
|
|
97
|
+
method: 'extractIPCMessages',
|
|
98
|
+
input: match.trim().slice(0, 100), // First 100 chars for debugging
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Validate IPC message structure
|
|
105
|
+
*/
|
|
106
|
+
isValidIPCMessage(obj) {
|
|
107
|
+
return Boolean(obj &&
|
|
108
|
+
typeof obj === 'object' &&
|
|
109
|
+
typeof obj.id === 'string' &&
|
|
110
|
+
typeof obj.type === 'string');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get current buffer size
|
|
114
|
+
*/
|
|
115
|
+
getBufferSize() {
|
|
116
|
+
return this.buffer.length;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Clear the buffer
|
|
120
|
+
*/
|
|
121
|
+
clear() {
|
|
122
|
+
this.buffer = '';
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Dispose resources
|
|
126
|
+
*/
|
|
127
|
+
dispose() {
|
|
128
|
+
this.clear();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if disposed
|
|
132
|
+
*/
|
|
133
|
+
isDisposed() {
|
|
134
|
+
return false; // MessageBuffer doesn't have complex disposal logic
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Message serializer for encoding IPC messages
|
|
139
|
+
*/
|
|
140
|
+
export class MessageSerializer {
|
|
141
|
+
delimiter;
|
|
142
|
+
constructor(delimiter = MESSAGE_DELIMITER) {
|
|
143
|
+
this.delimiter = delimiter;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Serialize message to buffer
|
|
147
|
+
*/
|
|
148
|
+
serialize(message) {
|
|
149
|
+
try {
|
|
150
|
+
const json = JSON.stringify(message);
|
|
151
|
+
const text = json + this.delimiter;
|
|
152
|
+
return Buffer.from(text, 'utf8');
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
throw new Error(`Failed to serialize message: ${error}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Message deserializer using MessageBuffer
|
|
161
|
+
*/
|
|
162
|
+
export class MessageDeserializer extends MessageBuffer {
|
|
163
|
+
constructor(delimiter = MESSAGE_DELIMITER, maxSize = MAX_MESSAGE_SIZE) {
|
|
164
|
+
super(delimiter, maxSize);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Complete message protocol handler
|
|
169
|
+
*/
|
|
170
|
+
export class MessageProtocol {
|
|
171
|
+
serializer;
|
|
172
|
+
deserializer;
|
|
173
|
+
constructor(delimiter = MESSAGE_DELIMITER, maxSize = MAX_MESSAGE_SIZE) {
|
|
174
|
+
this.serializer = new MessageSerializer(delimiter);
|
|
175
|
+
this.deserializer = new MessageDeserializer(delimiter, maxSize);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Encode a message to buffer
|
|
179
|
+
*/
|
|
180
|
+
encode(message) {
|
|
181
|
+
return this.serializer.serialize(message);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Decode data and extract messages
|
|
185
|
+
*/
|
|
186
|
+
decode(data) {
|
|
187
|
+
return this.deserializer.push(data);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get current buffer size
|
|
191
|
+
*/
|
|
192
|
+
getBufferSize() {
|
|
193
|
+
return this.deserializer.getBufferSize();
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Clear the decode buffer
|
|
197
|
+
*/
|
|
198
|
+
clearBuffer() {
|
|
199
|
+
this.deserializer.clear();
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Dispose resources
|
|
203
|
+
*/
|
|
204
|
+
dispose() {
|
|
205
|
+
this.deserializer.dispose();
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Check if disposed
|
|
209
|
+
*/
|
|
210
|
+
isDisposed() {
|
|
211
|
+
return this.deserializer.isDisposed();
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get resource stats
|
|
215
|
+
*/
|
|
216
|
+
getResourceStats() {
|
|
217
|
+
return {
|
|
218
|
+
bufferSize: this.getBufferSize(),
|
|
219
|
+
isDisposed: this.isDisposed(),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Create a message protocol instance
|
|
225
|
+
*/
|
|
226
|
+
export function createMessageProtocol(delimiter = MESSAGE_DELIMITER, maxSize = MAX_MESSAGE_SIZE) {
|
|
227
|
+
return new MessageProtocol(delimiter, maxSize);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Utility function to validate message size
|
|
231
|
+
*/
|
|
232
|
+
export function validateMessageSize(message, maxSize = MAX_MESSAGE_SIZE) {
|
|
233
|
+
try {
|
|
234
|
+
const json = JSON.stringify(message);
|
|
235
|
+
return json.length <= maxSize;
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Utility function to estimate message size
|
|
243
|
+
*/
|
|
244
|
+
export function estimateMessageSize(message) {
|
|
245
|
+
try {
|
|
246
|
+
return JSON.stringify(message).length;
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return 0;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=message-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-protocol.js","sourceRoot":"","sources":["../../../src/daemon/message-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named Pipe Client Implementation
|
|
3
|
+
*
|
|
4
|
+
* Concrete implementation of IPC client using Named Pipes.
|
|
5
|
+
* Supports Windows systems.
|
|
6
|
+
*/
|
|
7
|
+
import { IPCClientBase } from './ipc-client-base.js';
|
|
8
|
+
import type { IPCMessage, IPCClientConfig } from '../shared/ipc.js';
|
|
9
|
+
/**
|
|
10
|
+
* Named Pipe Client
|
|
11
|
+
*/
|
|
12
|
+
export declare class NamedPipeClient extends IPCClientBase {
|
|
13
|
+
private socket;
|
|
14
|
+
private readonly pipePath;
|
|
15
|
+
private readonly protocol;
|
|
16
|
+
private connectionTimeout;
|
|
17
|
+
private eventListeners;
|
|
18
|
+
constructor(config?: IPCClientConfig);
|
|
19
|
+
/**
|
|
20
|
+
* Connect to the Named Pipe server
|
|
21
|
+
*/
|
|
22
|
+
protected connectToServer(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Disconnect from the Named Pipe server
|
|
25
|
+
*/
|
|
26
|
+
protected disconnectFromServer(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Write message to the socket
|
|
29
|
+
*/
|
|
30
|
+
protected writeMessage(message: IPCMessage): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Get the pipe path
|
|
33
|
+
*/
|
|
34
|
+
getPipePath(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Check if client is currently connected
|
|
37
|
+
*/
|
|
38
|
+
isSocketConnected(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Set up socket event handlers
|
|
41
|
+
*/
|
|
42
|
+
private setupSocketHandlers;
|
|
43
|
+
/**
|
|
44
|
+
* Clean up event listeners
|
|
45
|
+
*/
|
|
46
|
+
private cleanupEventListeners;
|
|
47
|
+
/**
|
|
48
|
+
* Override dispose to clean up client-specific resources
|
|
49
|
+
*/
|
|
50
|
+
protected disposeCore(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Get client-specific resource stats
|
|
53
|
+
*/
|
|
54
|
+
getClientStats(): {
|
|
55
|
+
pipePath: string;
|
|
56
|
+
isSocketConnected: boolean;
|
|
57
|
+
hasConnectionTimeout: boolean;
|
|
58
|
+
trackedEventListeners: number;
|
|
59
|
+
} & ReturnType<typeof this.getResourceStats>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=named-pipe-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-pipe-client.d.ts","sourceRoot":"","sources":["../../../src/daemon/named-pipe-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGpE;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,cAAc,CAGP;gBAEH,MAAM,GAAE,eAA8B;IASlD;;OAEG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAsChD;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CrD;;OAEG;cACa,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhE;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAQ5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuD3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;cACa,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5C;;OAEG;IACH,cAAc,IAAI;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,qBAAqB,EAAE,MAAM,CAAC;KAC/B,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC;CAS7C"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named Pipe Client Implementation
|
|
3
|
+
*
|
|
4
|
+
* Concrete implementation of IPC client using Named Pipes.
|
|
5
|
+
* Supports Windows systems.
|
|
6
|
+
*/
|
|
7
|
+
import * as net from 'net';
|
|
8
|
+
import { setTimeout, clearTimeout } from 'timers';
|
|
9
|
+
import { IPCClientBase } from './ipc-client-base.js';
|
|
10
|
+
import { MessageProtocol } from './message-protocol.js';
|
|
11
|
+
/**
|
|
12
|
+
* Named Pipe Client
|
|
13
|
+
*/
|
|
14
|
+
export class NamedPipeClient extends IPCClientBase {
|
|
15
|
+
socket = null;
|
|
16
|
+
pipePath;
|
|
17
|
+
protocol;
|
|
18
|
+
connectionTimeout = null;
|
|
19
|
+
eventListeners = new Set();
|
|
20
|
+
constructor(config = { path: '' }) {
|
|
21
|
+
super(config);
|
|
22
|
+
// Determine pipe path
|
|
23
|
+
this.pipePath =
|
|
24
|
+
config.namedPipePath || config.path || '\\\\.\\pipe\\masuidrive-procman';
|
|
25
|
+
this.protocol = new MessageProtocol();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Connect to the Named Pipe server
|
|
29
|
+
*/
|
|
30
|
+
async connectToServer() {
|
|
31
|
+
// Create socket
|
|
32
|
+
this.socket = new net.Socket();
|
|
33
|
+
// Set up socket event handlers
|
|
34
|
+
this.setupSocketHandlers();
|
|
35
|
+
// Connect to server
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
this.connectionTimeout = this.setTimeout(() => {
|
|
38
|
+
this.socket?.destroy();
|
|
39
|
+
reject(new Error(`Connection timeout after ${this.config.timeout}ms`));
|
|
40
|
+
}, this.config.timeout);
|
|
41
|
+
const errorHandler = (error) => {
|
|
42
|
+
if (this.connectionTimeout) {
|
|
43
|
+
this.connectionTimeout.dispose();
|
|
44
|
+
this.connectionTimeout = null;
|
|
45
|
+
}
|
|
46
|
+
reject(error);
|
|
47
|
+
};
|
|
48
|
+
const connectHandler = () => {
|
|
49
|
+
if (this.connectionTimeout) {
|
|
50
|
+
this.connectionTimeout.dispose();
|
|
51
|
+
this.connectionTimeout = null;
|
|
52
|
+
}
|
|
53
|
+
// Remove the temporary error handler
|
|
54
|
+
this.socket?.removeListener('error', errorHandler);
|
|
55
|
+
resolve();
|
|
56
|
+
};
|
|
57
|
+
this.socket.once('connect', connectHandler);
|
|
58
|
+
this.socket.once('error', errorHandler);
|
|
59
|
+
this.socket.connect(this.pipePath);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Disconnect from the Named Pipe server
|
|
64
|
+
*/
|
|
65
|
+
async disconnectFromServer() {
|
|
66
|
+
if (!this.socket) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
return new Promise((resolve) => {
|
|
70
|
+
if (!this.socket) {
|
|
71
|
+
resolve();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Clean up connection timeout if still active
|
|
75
|
+
if (this.connectionTimeout) {
|
|
76
|
+
this.connectionTimeout.dispose();
|
|
77
|
+
this.connectionTimeout = null;
|
|
78
|
+
}
|
|
79
|
+
// Remove tracked event listeners
|
|
80
|
+
this.cleanupEventListeners();
|
|
81
|
+
// Set a timeout for graceful close
|
|
82
|
+
const timeout = setTimeout(() => {
|
|
83
|
+
if (this.socket && !this.socket.destroyed) {
|
|
84
|
+
this.socket.destroy();
|
|
85
|
+
}
|
|
86
|
+
this.socket = null;
|
|
87
|
+
resolve();
|
|
88
|
+
}, 1000); // 1 second timeout
|
|
89
|
+
this.socket.once('close', () => {
|
|
90
|
+
clearTimeout(timeout);
|
|
91
|
+
this.socket = null;
|
|
92
|
+
resolve();
|
|
93
|
+
});
|
|
94
|
+
// Try graceful close first
|
|
95
|
+
if (!this.socket.destroyed) {
|
|
96
|
+
this.socket.end();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Write message to the socket
|
|
102
|
+
*/
|
|
103
|
+
async writeMessage(message) {
|
|
104
|
+
if (!this.socket || this.socket.destroyed) {
|
|
105
|
+
throw new Error('Socket is not connected');
|
|
106
|
+
}
|
|
107
|
+
const buffer = this.protocol.encode(message);
|
|
108
|
+
return new Promise((resolve, reject) => {
|
|
109
|
+
this.socket.write(buffer, (error) => {
|
|
110
|
+
if (error) {
|
|
111
|
+
reject(error);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
resolve();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get the pipe path
|
|
121
|
+
*/
|
|
122
|
+
getPipePath() {
|
|
123
|
+
return this.pipePath;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Check if client is currently connected
|
|
127
|
+
*/
|
|
128
|
+
isSocketConnected() {
|
|
129
|
+
return !!(this.socket &&
|
|
130
|
+
!this.socket.destroyed &&
|
|
131
|
+
this.socket.readyState === 'open');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Set up socket event handlers
|
|
135
|
+
*/
|
|
136
|
+
setupSocketHandlers() {
|
|
137
|
+
if (!this.socket) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const dataHandler = (data) => {
|
|
141
|
+
try {
|
|
142
|
+
this.handleData(data);
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
this.emit('error', error instanceof Error ? error : new Error(String(error)));
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const errorHandler = (error) => {
|
|
149
|
+
this.handleConnectionError(error);
|
|
150
|
+
};
|
|
151
|
+
const closeHandler = (hadError) => {
|
|
152
|
+
// Only treat as error if it was an unexpected close
|
|
153
|
+
if (hadError && this.isConnected()) {
|
|
154
|
+
this.handleConnectionError(new Error('Socket connection closed unexpectedly'));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
// Normal close, just update state
|
|
158
|
+
this.setConnectionStatus('disconnected');
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
const endHandler = () => {
|
|
162
|
+
// Normal end, just update state
|
|
163
|
+
this.setConnectionStatus('disconnected');
|
|
164
|
+
};
|
|
165
|
+
const connectHandler = () => {
|
|
166
|
+
this.emit('socketConnected');
|
|
167
|
+
};
|
|
168
|
+
// Track event listeners for cleanup
|
|
169
|
+
this.eventListeners.add({ event: 'data', listener: dataHandler });
|
|
170
|
+
this.eventListeners.add({ event: 'error', listener: errorHandler });
|
|
171
|
+
this.eventListeners.add({ event: 'close', listener: closeHandler });
|
|
172
|
+
this.eventListeners.add({ event: 'end', listener: endHandler });
|
|
173
|
+
this.eventListeners.add({ event: 'connect', listener: connectHandler });
|
|
174
|
+
this.socket.on('data', dataHandler);
|
|
175
|
+
this.socket.on('error', errorHandler);
|
|
176
|
+
this.socket.on('close', closeHandler);
|
|
177
|
+
this.socket.on('end', endHandler);
|
|
178
|
+
this.socket.on('connect', connectHandler);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Clean up event listeners
|
|
182
|
+
*/
|
|
183
|
+
cleanupEventListeners() {
|
|
184
|
+
if (!this.socket) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
// Remove all tracked event listeners
|
|
188
|
+
for (const { event, listener } of this.eventListeners) {
|
|
189
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
190
|
+
this.socket.removeListener(event, listener);
|
|
191
|
+
}
|
|
192
|
+
this.eventListeners.clear();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Override dispose to clean up client-specific resources
|
|
196
|
+
*/
|
|
197
|
+
async disposeCore() {
|
|
198
|
+
// Clean up connection timeout
|
|
199
|
+
if (this.connectionTimeout) {
|
|
200
|
+
await this.connectionTimeout.dispose();
|
|
201
|
+
this.connectionTimeout = null;
|
|
202
|
+
}
|
|
203
|
+
// Clean up event listeners
|
|
204
|
+
this.cleanupEventListeners();
|
|
205
|
+
// Call parent dispose
|
|
206
|
+
await super.disposeCore();
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get client-specific resource stats
|
|
210
|
+
*/
|
|
211
|
+
getClientStats() {
|
|
212
|
+
return {
|
|
213
|
+
...this.getResourceStats(),
|
|
214
|
+
pipePath: this.pipePath,
|
|
215
|
+
isSocketConnected: this.isSocketConnected(),
|
|
216
|
+
hasConnectionTimeout: !!this.connectionTimeout,
|
|
217
|
+
trackedEventListeners: this.eventListeners.size,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=named-pipe-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-pipe-client.js","sourceRoot":"","sources":["../../../src/daemon/named-pipe-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named Pipe Server Implementation
|
|
3
|
+
*
|
|
4
|
+
* Concrete implementation of IPC server using Named Pipes.
|
|
5
|
+
* Supports Windows systems.
|
|
6
|
+
*/
|
|
7
|
+
import { IPCServerBase } from './ipc-server-base.js';
|
|
8
|
+
import type { IPCServerConfig } from '../shared/ipc.js';
|
|
9
|
+
/**
|
|
10
|
+
* Named Pipe Server
|
|
11
|
+
*/
|
|
12
|
+
export declare class NamedPipeServer extends IPCServerBase {
|
|
13
|
+
private server;
|
|
14
|
+
private readonly pipePath;
|
|
15
|
+
constructor(config?: IPCServerConfig);
|
|
16
|
+
/**
|
|
17
|
+
* Start the Named Pipe server
|
|
18
|
+
*/
|
|
19
|
+
protected startServer(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Stop the Named Pipe server
|
|
22
|
+
*/
|
|
23
|
+
protected stopServer(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Get the pipe path
|
|
26
|
+
*/
|
|
27
|
+
getPipePath(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Set up server event handlers
|
|
30
|
+
*/
|
|
31
|
+
private setupServerHandlers;
|
|
32
|
+
/**
|
|
33
|
+
* Get server-specific resource stats
|
|
34
|
+
*/
|
|
35
|
+
getServerStats(): {
|
|
36
|
+
pipePath: string;
|
|
37
|
+
serverListening: boolean;
|
|
38
|
+
} & ReturnType<typeof this.getResourceStats>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=named-pipe-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-pipe-server.d.ts","sourceRoot":"","sources":["../../../src/daemon/named-pipe-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAYxD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,GAAE,eAA8B;IAQlD;;OAEG;cACa,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5C;;OAEG;cACa,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3C;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,cAAc,IAAI;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,OAAO,CAAC;KAC1B,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC;CAO7C"}
|