urbanflo-sumo-server
acts as the backend to UrbanFlo, and is responsible for communicating with SUMO which is the simulation engine we use, as well as storing simulation files.
The server itself mostly adopts a controller-server-repository architecture. The controller is responsible for defining API endpoints for the frontend, which it communicates using WebSocket for the simulation stream, and REST for pretty much anything else (e.g. uploading a document). The storage service serves as an intermediate between the controller and the filesystem, while SimulationInstance
is responsible for interacting with SUMO via the TraCI library.
This package contains classes for Spring configuration, such as WebSocketConfig
for WebSocket configuration.
Contains all controller classes.
Contains custom Jackson serializers and deserializers, such as UnixDoubleTimestampDeserializer
which deserializes Unix timestamps encoded as Double
to Java OffsetDateTime
.
Contains model classes for various things, including API bodies and responses as well as SUMO data.
Contains any code related to netconvert
which is a commandline SUMO utility for converting network data.
Any code for running and managing simulations, such as SimulationInstance
which contains a running simulation instance.
Anything related to storage, such as FilesystemStorageService
which is our current implementation of the storage service.