#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck disable=SC1091 source "${SCRIPT_DIR}/load-env.sh" require_robot_command_center_root if [[ ! -d "${PYTHON_VENV_PATH}" ]]; then "${PYTHON3_BIN}" -m venv "${PYTHON_VENV_PATH}" fi # shellcheck disable=SC1091 source "${PYTHON_VENV_PATH}/bin/activate" cd "${BACKEND_DIR}" export OMNISOCKET_SERVER_ADDR="${CONTROL_SIDE_OMNISOCKET_SERVER_ADDR}" export OMNISOCKET_RELAY_VIA="${CONTROL_SIDE_OMNISOCKET_RELAY_VIA}" logger_pid="" cleanup() { if [[ -n "${logger_pid}" ]]; then kill "${logger_pid}" 2>/dev/null || true wait "${logger_pid}" 2>/dev/null || true fi } start_network_summary_logger() { local logger_url local logger_dir if [[ "${OMNI_NETWORK_SUMMARY_LOG_ENABLED}" != "1" ]]; then return fi logger_url="http://127.0.0.1:${BACKEND_PORT}/api/network/latest/" logger_dir="$(dirname "${OMNI_NETWORK_SUMMARY_LOG_PATH}")" mkdir -p "${logger_dir}" python "${SCRIPT_DIR}/log-network-summary.py" \ --url "${logger_url}" \ --output "${OMNI_NETWORK_SUMMARY_LOG_PATH}" \ --interval-ms "${OMNI_NETWORK_SUMMARY_LOG_INTERVAL_MS}" \ --request-timeout-sec "${OMNI_NETWORK_SUMMARY_LOG_REQUEST_TIMEOUT_SEC}" & logger_pid=$! echo "[start-backend] network summary logger -> ${OMNI_NETWORK_SUMMARY_LOG_PATH} (${OMNI_NETWORK_SUMMARY_LOG_INTERVAL_MS} ms)" >&2 } trap cleanup EXIT INT TERM start_network_summary_logger python -m uvicorn config.asgi:application --host "${BACKEND_HOST}" --port "${BACKEND_PORT}"