El contrato P2P define nombres, topics y rutas compartidas entre máquina y ruta.
Archivo principal:
Contract/src/main/java/co/ada/contract/P2PContract.ktP2PContract.Names.MACHINE_NAME = “MACHINE-”P2PContract.Names.OPERATOR_NAME = “OPERATOR-”P2PContract.Topics.MACHINE_STATE = “p2p.machine.state”MACHINE_WEIGHT = “/p2p/machine/weight”MACHINE_CONFIGURATION = “/p2p/machine/configuration”DELIVERIES_PAGE(page, size) = “/p2p/machine/deliveries/$page/$size”DELIVERY(id) = “/p2p/machine/delivery/$id”DELIVERY_SYNCHRONIZED(id) = “/p2p/machine/delivery/synchronized/$id”Archivo principal:
Contract/src/main/java/co/ada/contract/P2PModels.ktP2PMachineStateid, name, unsyncedDeliveries, machineStatus, stateName, shiftName, etc.P2PWeightweight para actualización de peso.P2PDeliveriesPageResponsedeliveryIds y metadatos de paginación.P2PDeliveryDataP2PDeliveryDeletionResponseP2PMachineConfigurationP2PMachineConfigurationUpdateRequest / ResponseArchivo principal:
Contract/src/main/java/co/ada/contract/P2PGestor.ktResponsabilidades:
DirectConnection.peers, machines y operators.machines: peers que comienzan con MACHINE-.operators: peers que comienzan con OPERATOR-.Archivo principal:
RutaPAEDomain/src/main/java/co/ada/rutapaedomain/p2p/P2PManager.ktstart(): arranca el P2P, consolida alias de máquinas y suscribe a eventos.close(): detiene el gestor y cancela jobs.discoverableMachineIds(): IDs locales de máquinas detectables.discoveredMachineCandidates(): máquinas detectadas sin registro local.discoveredMachineHotspots(): hotspots de máquina disponibles.connectMachine(machineDatabaseId): conecta a una máquina conocida.connectDiscoveredMachine(address): conecta a un peer descubierto.connectMachineHotspot(ssid): une y resuelve un hotspot de máquina.getMachineConfiguration(machineDatabaseId): obtiene configuración desde la máquina.updateMachineConfiguration(…): actualiza parámetros de configuración.notifyDeliverySynchronized(…): marca una entrega remota como sincronizada.syncDeliveriesFromMachine(machineDatabaseId): descarga entregas remotas desde la máquina.P2PManager extrae IDs de peer basándose en prefijos MACHINE-.tmp-…) y IDs oficiales.P2PMachineState.id oficial, reconcilia alias temporales.DirectConnection.connect(peer): conecta con un peer ya descubierto.DirectConnection.connectHotspot(hotspot): une a un hotspot reportado por la máquina.Si el hotspot no puede unirse automáticamente, la app busca un peer descubierto que represente la misma máquina y lo usa como respaldo.