# cristiianoo/mensageiroseguro architecture

> Architecture diagram of the GitHub repository cristiianoo/mensageiroseguro, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cristiianoo/mensageiroseguro
- Repository: https://github.com/cristiianoo/mensageiroseguro

## Overview

MensageiroSeguro is a small TCP messaging application: a command-line client connects to a relay, which manages user sessions and forwards opaque message payloads. The documented protocol also supports user listing and public-key registration and lookup; client-side encryption is not shown in the available source. The relay’s connection handling and state are visible, but the excerpt omits much of command dispatch, so those internal relationships are not inferred.

Main entry points: [`src/Relay.java`](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java) (Connection handler), [`src/Client.java`](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Client.java) (Command client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client"]
  node_client_app["Command client<br/>[Client.java]"]
end

subgraph group_relay["Relay"]
  node_relay_server["TCP relay<br/>[Relay.java]"]
  node_connection_handler["Connection handler<br/>[Relay.java]"]
  node_session["Client session<br/>[Relay.java]"]
end

subgraph group_state["Relay state"]
  node_online_users[("Online users<br/>[Relay.java]")]
  node_registered_users[("Registered users<br/>[Relay.java]")]
  node_public_keys[("Public keys<br/>[Relay.java]")]
end

node_user(("User"))

node_user -->|"enters commands"| node_client_app
node_client_app -->|"opens TCP connection"| node_relay_server
node_relay_server -->|"dispatches connection"| node_connection_handler
node_connection_handler -->|"creates session"| node_session
node_connection_handler -->|"reads commands"| node_session
node_session -->|"sends responses"| node_client_app
node_connection_handler -->|"tracks sessions"| node_online_users
node_connection_handler -->|"records registration"| node_registered_users
node_connection_handler -->|"stores and looks up keys"| node_public_keys
node_connection_handler -->|"forwards messages"| node_session

click node_client_app "https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Client.java"
click node_relay_server "https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java"
click node_connection_handler "https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java"
click node_session "https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java"
click node_online_users "https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java"
click node_registered_users "https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java"
click node_public_keys "https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_client_app,node_user toneBlue
class node_relay_server,node_connection_handler,node_session toneAmber
class node_online_users,node_registered_users,node_public_keys toneMint
```

## Components

### Client

- [Command client](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Client.java): `src/Client.java`

### Relay

- [TCP relay](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java): `src/Relay.java`
- [Connection handler](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java): `src/Relay.java`
- [Client session](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java): `src/Relay.java`

### Relay state

- [Online users](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java): `src/Relay.java`
- [Registered users](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java): `src/Relay.java`
- [Public keys](https://github.com/cristiianoo/mensageiroseguro/blob/main/src/Relay.java): `src/Relay.java`

### Other components

- **User**

## Connections

- User → Command client: enters commands (evidence: `src/Client.java`)
- Command client → TCP relay: opens TCP connection (evidence: `src/Client.java`)
- TCP relay → Connection handler: dispatches connection (evidence: `src/Relay.java`)
- Connection handler → Client session: creates session (evidence: `src/Relay.java`)
- Connection handler → Client session: reads commands (evidence: `src/Relay.java`)
- Client session → Command client: sends responses (evidence: `src/Client.java`)
- Connection handler → Online users: tracks sessions (evidence: `src/Relay.java`)
- Connection handler → Registered users: records registration (evidence: `src/Relay.java`)
- Connection handler → Public keys: stores and looks up keys (evidence: `src/Relay.java`)
- Connection handler → Client session: forwards messages (evidence: `src/Relay.java`)
