# babars98/edgeoffloading architecture

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

- Interactive diagram: https://gitdiagram.com/babars98/edgeoffloading
- Repository: https://github.com/babars98/edgeoffloading

## Overview

EdgeOffloading is a QoS-aware edge-offloading simulator built on iFogSim/CloudSim. Its product workflow models an application and its sensor/actuator endpoints, makes offloading or placement decisions, then simulates execution across fog devices and reports latency/QoS outcomes. The tree also shows microservice placement, mobility/clustering, and network-routing capabilities. Only a short README and selected source excerpts were available; links for unsampled subsystems are therefore limited to relationships supported by those excerpts or clearly represented by their runtime roles.

Main entry points: [`src/org/fog/entities/FogDevice.java`](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/FogDevice.java) (Fog devices), [`src/org/cloudbus/cloudsim/core/CloudSim.java`](https://github.com/babars98/edgeoffloading/blob/main/src/org/cloudbus/cloudsim/core/CloudSim.java) (Simulation engine), [`src/org/fog/placement/MicroservicesController.java`](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/placement/MicroservicesController.java) (Microservice controller), [`src/org/edgeoffload/SensorActuatorManager.java`](https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/SensorActuatorManager.java) (Sensor actuator setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_model["Application model"]
  node_appbuilder["Application builder"]
  node_appmodel["Application DAG<br/>[Application.java]"]
  node_endpoints["Sensor actuator setup"]
end

subgraph group_decision["Offloading and placement"]
  node_main["Offload entry<br/>[OffloadMain.java]"]
  node_offload["Offload algorithm"]
  node_taskoffloader["Task offloader<br/>[TaskOffloader.java]"]
  node_placement["Microservice controller"]
  node_placementlogic["Placement logic"]
  node_controllercomponent["Device controller"]
end

subgraph group_runtime["Fog simulation"]
  node_sensor["Sensors<br/>[Sensor.java]"]
  node_actuator["Actuators<br/>[Actuator.java]"]
  node_fogdevice["Fog devices<br/>[FogDevice.java]"]
  node_tuple["Task tuples<br/>[Tuple.java]"]
  node_cloudsim["Simulation engine<br/>[CloudSim.java]"]
  node_metrics["QoS metrics<br/>[TimeKeeper.java]"]
end

subgraph group_network["Network and mobility"]
  node_routing["Fog routing"]
  node_mobility["Mobility clustering"]
  node_networkmodel["Network topology"]
end

node_user(("Simulation user"))

node_user -->|"starts simulation"| node_main
node_appbuilder -->|"builds DAG"| node_appmodel
node_endpoints -->|"creates"| node_sensor
node_endpoints -->|"creates"| node_actuator
node_appmodel -->|"generates tuples"| node_tuple
node_placement -->|"requests decision"| node_placementlogic
node_placement -->|"initializes controllers"| node_controllercomponent
node_placement -->|"dispatches requests"| node_fogdevice
node_controllercomponent -->|"executes placement"| node_placementlogic
node_routing -->|"provides routes"| node_fogdevice
node_mobility -->|"updates placement"| node_fogdevice
node_main -->|"runs simulation"| node_cloudsim
node_offload -->|"selects offload"| node_taskoffloader
node_fogdevice -->|"simulates events"| node_cloudsim
node_networkmodel -->|"models network events"| node_cloudsim
node_tuple -->|"executes on"| node_fogdevice
node_sensor -->|"injects tuples"| node_fogdevice
node_fogdevice -->|"delivers output"| node_actuator
node_cloudsim -->|"records timing"| node_metrics

click node_main "https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/OffloadMain.java"
click node_offload "https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/OffloadAlgorithm.java"
click node_taskoffloader "https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/TaskOffloader.java"
click node_appbuilder "https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/ApplicationBuilder.java"
click node_appmodel "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/application/Application.java"
click node_endpoints "https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/SensorActuatorManager.java"
click node_sensor "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/Sensor.java"
click node_actuator "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/Actuator.java"
click node_placement "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/placement/MicroservicesController.java"
click node_placementlogic "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/placement/MicroservicePlacementLogic.java"
click node_controllercomponent "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/ControllerComponent.java"
click node_fogdevice "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/FogDevice.java"
click node_tuple "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/Tuple.java"
click node_cloudsim "https://github.com/babars98/edgeoffloading/blob/main/src/org/cloudbus/cloudsim/core/CloudSim.java"
click node_routing "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/utils/ShortestPathRoutingGenerator.java"
click node_mobility "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/placement/MicroservicesMobilityClusteringController.java"
click node_networkmodel "https://github.com/babars98/edgeoffloading/blob/main/src/org/cloudbus/cloudsim/network/datacenter/NetworkDatacenter.java"
click node_metrics "https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/utils/TimeKeeper.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_appbuilder,node_appmodel,node_endpoints,node_user toneBlue
class node_main,node_offload,node_taskoffloader,node_placement,node_placementlogic,node_controllercomponent toneAmber
class node_sensor,node_actuator,node_fogdevice,node_tuple,node_cloudsim,node_metrics toneMint
class node_routing,node_mobility,node_networkmodel toneRose
```

## Components

### Application model

- [Application builder](https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/ApplicationBuilder.java): `src/org/edgeoffload/ApplicationBuilder.java`
- [Application DAG](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/application/Application.java): `src/org/fog/application/Application.java`
- [Sensor actuator setup](https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/SensorActuatorManager.java): `src/org/edgeoffload/SensorActuatorManager.java`

### Offloading and placement

- [Offload entry](https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/OffloadMain.java): `src/org/edgeoffload/OffloadMain.java`
- [Offload algorithm](https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/OffloadAlgorithm.java): `src/org/edgeoffload/OffloadAlgorithm.java`
- [Task offloader](https://github.com/babars98/edgeoffloading/blob/main/src/org/edgeoffload/TaskOffloader.java): `src/org/edgeoffload/TaskOffloader.java`
- [Microservice controller](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/placement/MicroservicesController.java): `src/org/fog/placement/MicroservicesController.java`
- [Placement logic](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/placement/MicroservicePlacementLogic.java): `src/org/fog/placement/MicroservicePlacementLogic.java`
- [Device controller](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/ControllerComponent.java): `src/org/fog/entities/ControllerComponent.java`

### Fog simulation

- [Sensors](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/Sensor.java): `src/org/fog/entities/Sensor.java`
- [Actuators](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/Actuator.java): `src/org/fog/entities/Actuator.java`
- [Fog devices](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/FogDevice.java): `src/org/fog/entities/FogDevice.java`
- [Task tuples](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/entities/Tuple.java): `src/org/fog/entities/Tuple.java`
- [Simulation engine](https://github.com/babars98/edgeoffloading/blob/main/src/org/cloudbus/cloudsim/core/CloudSim.java): `src/org/cloudbus/cloudsim/core/CloudSim.java`
- [QoS metrics](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/utils/TimeKeeper.java): `src/org/fog/utils/TimeKeeper.java`

### Network and mobility

- [Fog routing](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/utils/ShortestPathRoutingGenerator.java): `src/org/fog/utils/ShortestPathRoutingGenerator.java`
- [Mobility clustering](https://github.com/babars98/edgeoffloading/blob/main/src/org/fog/placement/MicroservicesMobilityClusteringController.java): `src/org/fog/placement/MicroservicesMobilityClusteringController.java`
- [Network topology](https://github.com/babars98/edgeoffloading/blob/main/src/org/cloudbus/cloudsim/network/datacenter/NetworkDatacenter.java): `src/org/cloudbus/cloudsim/network/datacenter/NetworkDatacenter.java`

### Other components

- **Simulation user**

## Connections

- Simulation user → Offload entry: starts simulation
- Application builder → Application DAG: builds DAG
- Sensor actuator setup → Sensors: creates
- Sensor actuator setup → Actuators: creates
- Application DAG → Task tuples: generates tuples
- Microservice controller → Placement logic: requests decision
- Microservice controller → Device controller: initializes controllers
- Microservice controller → Fog devices: dispatches requests
- Device controller → Placement logic: executes placement
- Fog routing → Fog devices: provides routes
- Mobility clustering → Fog devices: updates placement
- Offload entry → Simulation engine: runs simulation
- Offload algorithm → Task offloader: selects offload
- Fog devices → Simulation engine: simulates events
- Network topology → Simulation engine: models network events
- Task tuples → Fog devices: executes on
- Sensors → Fog devices: injects tuples
- Fog devices → Actuators: delivers output
- Simulation engine → QoS metrics: records timing
