Túneles

Túneles

Un túnel es un viaje dividido en pasos — un registro, un pago, una renovación — cuyo camino puede cambiar según lo que responda el visitante. El paquete recuerda en qué punto se encuentra cada visitante, les permite avanzar por los pasos que pueden ver y les envía de vuelta a donde pertenecen cuando intentan adelantar.

Un árbol de cursores

Un túnel se construye como un árbol, no como una lista. Un paso alcanzado desde dos lugares es dos cursores, cada uno con su propio hash y sus propios valores almacenados: eso es lo que permite que una rama crezca pasos que otra no tiene, y de lo que se lee el camino que tomaste, mostrado al final de cada túnel.

Una sesión en la base de datos

Abrir un túnel crea una sesión, que la sesión del navegador solo conoce por su id. Mantiene los valores que almacenan los pasos y expira un día después del último paso mostrado — o antes, cuando ese paso lo solicita. Las sesiones expiradas son eliminadas por el programador, cada 15 minutos; se mantienen las completadas y pendientes.

A dónde puede ir el visitante

Cada paso decide si puede mostrarse y a dónde enviar al visitante en caso contrario. Los enlaces y botones se dibujan con las mismas reglas, por lo que un enlace nunca lleva a una redirección de vuelta: no hay botón de siguiente donde el camino se divide, no hay forma de volver después de un pago, nada a lo que regresar en una sesión cerrada.

Qué mirar mientras caminas

El selector de pasos Dónde te encuentras, qué hay detrás, qué hay adelante. Un hueco marca dónde el camino depende de una elección que aún no se ha tomado.
Detrás de este paso Bajo cada paso, lo que el motor acaba de hacer y su estado: el cursor, cómo se completa el paso, la sesión y cuándo expira.
La barra de herramientas de desarrollo y el shell La pestaña Túneles de la barra de herramientas de desarrollo dibuja la sesión de este navegador en el mapa de su túnel; bin/console tunnels:info hace lo mismo desde un shell.