Summary
The IProcessInfoProvider abstraction and all 4 implementations (NamedPipe / SharedMemory / EncryptedFile / AutoFallback) are fully implemented, but the core workflow still uses the old Environments.SetEnvironmentVariable("ProcessInfo", ...) approach for Client-to-Upgrade IPC.
Current State
ClientUpdateStrategy.ExecuteStandardWorkflowAsync() serializes ProcessInfo to Environments
GeneralUpdateBootstrap.InitializeFromEnvironment() reads via Environments.GetEnvironmentVariable()
IProcessInfoProvider with NamedPipeProcessInfoProvider, SharedMemoryProcessInfoProvider, EncryptedFileProcessInfoProvider, and AutoProcessInfoProvider are all implemented but unused
Expected
- Client-side: use
AutoProcessInfoProvider.SendAsync() to pass ProcessInfo (auto-fallback: NamedPipe, SharedMemory, EncryptedFile)
- Upgrade-side: use
AutoProcessInfoProvider.ReceiveAsync() to receive ProcessInfo
- Remove the old
Environments usage for ProcessInfo IPC (keep for other env variables if needed)
Benefits
- NamedPipe: zero file residue, most secure
- SharedMemory: Linux-friendly, no fs residue
- EncryptedFile: fallback when pipes/shm unavailable
- Auto-fallback ensures maximum cross-platform compatibility
Ref
Refactoring plan v2: Sub Issue 6 (ProcessInfo IPC re-design)
Summary
The
IProcessInfoProviderabstraction and all 4 implementations (NamedPipe / SharedMemory / EncryptedFile / AutoFallback) are fully implemented, but the core workflow still uses the oldEnvironments.SetEnvironmentVariable("ProcessInfo", ...)approach for Client-to-Upgrade IPC.Current State
ClientUpdateStrategy.ExecuteStandardWorkflowAsync()serializes ProcessInfo toEnvironmentsGeneralUpdateBootstrap.InitializeFromEnvironment()reads viaEnvironments.GetEnvironmentVariable()IProcessInfoProviderwithNamedPipeProcessInfoProvider,SharedMemoryProcessInfoProvider,EncryptedFileProcessInfoProvider, andAutoProcessInfoProviderare all implemented but unusedExpected
AutoProcessInfoProvider.SendAsync()to pass ProcessInfo (auto-fallback: NamedPipe, SharedMemory, EncryptedFile)AutoProcessInfoProvider.ReceiveAsync()to receive ProcessInfoEnvironmentsusage for ProcessInfo IPC (keep for other env variables if needed)Benefits
Ref
Refactoring plan v2: Sub Issue 6 (ProcessInfo IPC re-design)