Skip to content

ipc/network: refazer a comunicação entre worker/system-tray e implementar API HTTP#2

Merged
glauberx86 merged 9 commits intomasterfrom
api
Dec 24, 2025
Merged

ipc/network: refazer a comunicação entre worker/system-tray e implementar API HTTP#2
glauberx86 merged 9 commits intomasterfrom
api

Conversation

@glauberx86
Copy link
Copy Markdown
Member

@glauberx86 glauberx86 commented Dec 18, 2025

Problema / Solução

The Problem A arquitetura anterior de comunicação via Named Pipes era instável, com o Worker agindo incorretamente como cliente, o que causava erros de I/O e race conditions. Além disso, não havia um mecanismo de exfiltração de métricas para um backend remoto.

The Solution O Worker agora atua como NamedPipeServer, mantendo um snapshot thread-safe das métricas. O Tray atua como cliente, consumindo esses dados para debug local e encaminhamento.

Para o reporte remoto, a implementação inicial de WebSockets foi descartada em favor de requisições HTTP POST stateless, visando agilidade para um mvp.

Key Changes

  • IPC Inversion: O Worker agora hospeda o servidor do pipe (asset-monitor-pipe). O Tray conecta, lê o snapshot atual e desconecta.

  • Metric Collection: Implementado loop de coleta (5s) para CPU, RAM, Disco e Rede.

  • Network Layer:

    • Introduzido HttpClient com suporte a Bearer Token via appsettings.json.
    • Removido código de WebSocket (revertido) para evitar complexidade de handshake e keep-alive desnecessários neste estágio.
  • Deployment: Adicionado script setup.iss (Inno Setup) para registro automático do Serviço Windows e agendamento de tarefa do Tray (bypass UAC).

  • Security: Adicionado manifesto de aplicação exigindo requireAdministrator para gestão correta do serviço.

Checklist:

  • Refactor: Worker promovido a Pipe Server (com snapshotting thread-safe).
  • Feature: Tray implementa lógica de ServiceController (Start/Stop).
  • Network: Cliente WebSocket substituído por HTTP POST resiliente.
  • Deploy: Adicionado script Inno Setup para serviço e agendamento de tarefas.
  • Debug: Adicionado endpoint HTTP local (porta 8765) para inspeção.
  • Docs: README atualizado com visão geral da arquitetura.

@glauberx86 glauberx86 self-assigned this Dec 18, 2025
@glauberx86 glauberx86 added the enhancement New feature or request label Dec 18, 2025
Copy link
Copy Markdown
Member Author

@glauberx86 glauberx86 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deploy (appsettings)

Logica do Inno Setup:

  1. Template vs Produção: Excluir appsettings.json real, appsettings_example.json (com placeholders {{TOKEN}}) é enviado.
  2. Wizard Customizado: Usar [Code] do Inno Setup para solicitar o token na instalação.
  3. Post-Install: O script substitui automaticamente o placeholder no arquivo JSON final pelo valor inserido.

Comment thread AssetManager.installer/setup.iss
Comment thread AssetManager.tray/AssetManager.tray.csproj Outdated
@glauberx86 glauberx86 mentioned this pull request Dec 18, 2025
@glauberx86 glauberx86 linked an issue Dec 18, 2025 that may be closed by this pull request
@glauberx86
Copy link
Copy Markdown
Member Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Deploy (appsettings)

1 participant