1
0
mirror of https://github.com/actix/actix-website synced 2024-12-21 03:04:49 +01:00
actix-website/static/img/diagrams/connection_worker.mmd

35 lines
973 B
Plaintext
Raw Normal View History

sequenceDiagram
participant ServerBuilder
participant WorkerClient
participant Worker
participant StreamService
participant HttpServiceHandler
participant Tokio
ServerBuilder-->>Tokio: spawn(Worker)
Tokio-->>Worker: poll()
alt WorkerState::Available
loop
Worker->>WorkerClient: rx.poll_next()
WorkerClient->>Worker: WorkerCommand(Conn)
Worker->>Worker: check_readiness()
alt check_readiness() -> Ok(true)
Note over Worker,StreamService: Worker::services[Conn.token]
Worker-->>StreamService: call(ServerMessage::Connect(stream))
StreamService->>HttpServiceHandler: call(stream)
HttpServiceHandler->>StreamService: HttpServiceHandlerResponse as Future
StreamService->>Tokio: spawn(HttpServiceHandlerResponse)
else check_readiness() -> Ok(false)
Worker-->>Worker: WorkerState::Unavailable
else check_readiness() -> Err(token,idx)
Worker-->>Worker: WorkerState::Restarting
end
end
end
Note over HttpServiceHandler: process connection