# rs-gty/gty-network-simulator architecture

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

- Interactive diagram: https://gitdiagram.com/rs-gty/gty-network-simulator
- Repository: https://github.com/rs-gty/gty-network-simulator

## Overview

GTY Network Simulator is a discrete-event signal-propagation simulator. Its demonstrated workflow constructs a scheduler and medium, attaches a sine-wave generator and listener, generates a signal, runs delayed propagation events, then plots the received samples. The graph also shows the medium/port/device layers and physical-time utilities. The README is empty; connections for unsampled listener and UI behavior are limited to references and wiring visible in the application entry point.

Main entry points: [`src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java) (Application entry), [`src/main/java/com/gty/netsim/layer/medium/Medium.java`](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/Medium.java) (Signal medium), [`src/main/java/com/gty/netsim/core/Scheduler.java`](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/core/Scheduler.java) (Event scheduler), [`src/main/java/com/gty/netsim/topology/MediumAssembler.java`](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/topology/MediumAssembler.java) (Medium assembler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Simulation runtime"]
  node_app["Application entry"]
  node_scheduler["Event scheduler<br/>[Scheduler.java]"]
  node_simclock["Simulation clock<br/>[SimClock.java]"]
  node_simevent["Scheduled event<br/>[SimEvent.java]"]
end

subgraph group_medium["Medium and ports"]
  node_assembler["Medium assembler"]
  node_medium["Signal medium<br/>[Medium.java]"]
  node_twisted["Twisted-pair medium"]
  node_port["Medium port<br/>[MediumPort.java]"]
  node_signalport["Signal-port interface<br/>[SignalPort.java]"]
  node_signalsink["Signal-sink interface<br/>[SignalSink.java]"]
  node_package["Signal package<br/>[SignalPackage.java]"]
end

subgraph group_devices["Signal devices"]
  node_device["Signal device<br/>[SignalDevice.java]"]
  node_generator["Signal generator"]
  node_sine["Sine-wave generator"]
  node_listener["Signal listener"]
end

subgraph group_presentation["Results and UI"]
  node_plot["Signal plot panel"]
end

subgraph group_physics["Physical units"]
  node_physics["Physical constants<br/>[Physics.java]"]
  node_units["Unit constants<br/>[Units.java]"]
end

node_user(("Simulator user"))

node_user -->|"starts"| node_app
node_app -->|"creates"| node_scheduler
node_app -->|"reads constant"| node_physics
node_app -->|"constructs"| node_twisted
node_app -->|"attaches devices"| node_assembler
node_app -->|"generates signal"| node_sine
node_app -->|"attaches listener"| node_listener
node_app -->|"runs events"| node_scheduler
node_app -->|"displays samples"| node_plot
node_scheduler -->|"implements"| node_simclock
node_scheduler -->|"queues and fires"| node_simevent
node_assembler -->|"creates"| node_port
node_assembler -->|"binds sink"| node_device
node_assembler -->|"attaches port"| node_medium
node_twisted -->|"extends"| node_medium
node_medium -->|"schedules arrival"| node_scheduler
node_medium -->|"transmits to ports"| node_signalport
node_medium -->|"attenuates signal"| node_package
node_port -->|"forwards transmission"| node_medium
node_port -->|"delivers signal"| node_signalsink
node_port -->|"implements"| node_signalport
node_device -->|"sends through"| node_signalport
node_generator -->|"extends"| node_device
node_sine -->|"implements waveform"| node_generator
node_sine -->|"packages samples"| node_package
node_physics -->|"uses time unit"| node_units

click node_app "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java"
click node_scheduler "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/core/Scheduler.java"
click node_simclock "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/core/SimClock.java"
click node_simevent "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/core/SimEvent.java"
click node_assembler "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/topology/MediumAssembler.java"
click node_medium "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/Medium.java"
click node_twisted "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/TwistedPairMedium.java"
click node_port "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/mediumport/MediumPort.java"
click node_signalport "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/spi/SignalPort.java"
click node_signalsink "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/spi/SignalSink.java"
click node_package "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/signal/SignalPackage.java"
click node_device "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/SignalDevice.java"
click node_generator "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SignalGenerator.java"
click node_sine "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SineWaveGenerator.java"
click node_listener "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/listener/SignalListener.java"
click node_plot "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/app/ui/SignalPlotPanel.java"
click node_physics "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/common/Physics.java"
click node_units "https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/common/Units.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_app,node_scheduler,node_simclock,node_simevent,node_user toneBlue
class node_assembler,node_medium,node_twisted,node_port,node_signalport,node_signalsink,node_package toneAmber
class node_device,node_generator,node_sine,node_listener toneMint
class node_plot toneRose
class node_physics,node_units toneIndigo
```

## Components

### Simulation runtime

- [Application entry](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java): `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`
- [Event scheduler](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/core/Scheduler.java): `src/main/java/com/gty/netsim/core/Scheduler.java`
- [Simulation clock](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/core/SimClock.java): `src/main/java/com/gty/netsim/core/SimClock.java`
- [Scheduled event](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/core/SimEvent.java): `src/main/java/com/gty/netsim/core/SimEvent.java`

### Medium and ports

- [Medium assembler](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/topology/MediumAssembler.java): `src/main/java/com/gty/netsim/topology/MediumAssembler.java`
- [Signal medium](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/Medium.java): `src/main/java/com/gty/netsim/layer/medium/Medium.java`
- [Twisted-pair medium](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/TwistedPairMedium.java): `src/main/java/com/gty/netsim/layer/medium/TwistedPairMedium.java`
- [Medium port](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/mediumport/MediumPort.java): `src/main/java/com/gty/netsim/layer/medium/mediumport/MediumPort.java`
- [Signal-port interface](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/spi/SignalPort.java): `src/main/java/com/gty/netsim/layer/medium/spi/SignalPort.java`
- [Signal-sink interface](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/spi/SignalSink.java): `src/main/java/com/gty/netsim/layer/medium/spi/SignalSink.java`
- [Signal package](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/signal/SignalPackage.java): `src/main/java/com/gty/netsim/layer/medium/signal/SignalPackage.java`

### Signal devices

- [Signal device](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/SignalDevice.java): `src/main/java/com/gty/netsim/layer/medium/portdevice/SignalDevice.java`
- [Signal generator](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SignalGenerator.java): `src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SignalGenerator.java`
- [Sine-wave generator](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SineWaveGenerator.java): `src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SineWaveGenerator.java`
- [Signal listener](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/layer/medium/portdevice/listener/SignalListener.java): `src/main/java/com/gty/netsim/layer/medium/portdevice/listener/SignalListener.java`

### Results and UI

- [Signal plot panel](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/app/ui/SignalPlotPanel.java): `src/main/java/com/gty/netsim/app/ui/SignalPlotPanel.java`

### Physical units

- [Physical constants](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/common/Physics.java): `src/main/java/com/gty/netsim/common/Physics.java`
- [Unit constants](https://github.com/rs-gty/gty-network-simulator/blob/master/src/main/java/com/gty/netsim/common/Units.java): `src/main/java/com/gty/netsim/common/Units.java`

### Other components

- **Simulator user**

## Connections

- Simulator user → Application entry: starts (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Event scheduler: creates (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Physical constants: reads constant (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Twisted-pair medium: constructs (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Medium assembler: attaches devices (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Sine-wave generator: generates signal (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Signal listener: attaches listener (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Event scheduler: runs events (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Application entry → Signal plot panel: displays samples (evidence: `src/main/java/com/gty/netsim/GtyNetSimulatorApplication.java`)
- Event scheduler → Simulation clock: implements (evidence: `src/main/java/com/gty/netsim/core/Scheduler.java`)
- Event scheduler → Scheduled event: queues and fires (evidence: `src/main/java/com/gty/netsim/core/Scheduler.java`)
- Medium assembler → Medium port: creates (evidence: `src/main/java/com/gty/netsim/topology/MediumAssembler.java`)
- Medium assembler → Signal device: binds sink (evidence: `src/main/java/com/gty/netsim/topology/MediumAssembler.java`)
- Medium assembler → Signal medium: attaches port (evidence: `src/main/java/com/gty/netsim/topology/MediumAssembler.java`)
- Twisted-pair medium → Signal medium: extends (evidence: `src/main/java/com/gty/netsim/layer/medium/TwistedPairMedium.java`)
- Signal medium → Event scheduler: schedules arrival (evidence: `src/main/java/com/gty/netsim/layer/medium/Medium.java`)
- Signal medium → Signal-port interface: transmits to ports (evidence: `src/main/java/com/gty/netsim/layer/medium/Medium.java`)
- Signal medium → Signal package: attenuates signal (evidence: `src/main/java/com/gty/netsim/layer/medium/Medium.java`)
- Medium port → Signal medium: forwards transmission (evidence: `src/main/java/com/gty/netsim/layer/medium/mediumport/MediumPort.java`)
- Medium port → Signal-sink interface: delivers signal (evidence: `src/main/java/com/gty/netsim/layer/medium/mediumport/MediumPort.java`)
- Medium port → Signal-port interface: implements (evidence: `src/main/java/com/gty/netsim/layer/medium/mediumport/MediumPort.java`)
- Signal device → Signal-port interface: sends through (evidence: `src/main/java/com/gty/netsim/layer/medium/portdevice/SignalDevice.java`)
- Signal generator → Signal device: extends (evidence: `src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SignalGenerator.java`)
- Sine-wave generator → Signal generator: implements waveform (evidence: `src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SineWaveGenerator.java`)
- Sine-wave generator → Signal package: packages samples (evidence: `src/main/java/com/gty/netsim/layer/medium/portdevice/signalgenerator/SineWaveGenerator.java`)
- Physical constants → Unit constants: uses time unit (evidence: `src/main/java/com/gty/netsim/common/Physics.java`)
