MCPcopy Create free account
hub / github.com/SeleniumHQ/selenium / Router

Class Router

java/src/org/openqa/selenium/grid/router/Router.java:39–96  ·  view source on GitHub ↗

A simple router that is aware of the selenium-protocol.

Source from the content-addressed store, hash-verified

37
38/** A simple router that is aware of the selenium-protocol. */
39public class Router implements HasReadyState, Routable, Closeable {
40
41 private final Routable routes;
42 private final SessionMap sessions;
43 private final Distributor distributor;
44 private final NewSessionQueue queue;
45 private final HandleSession sessionHandler;
46
47 public Router(
48 Tracer tracer,
49 HttpClient.Factory clientFactory,
50 SessionMap sessions,
51 NewSessionQueue queue,
52 Distributor distributor) {
53 Require.nonNull("Tracer to use", tracer);
54 Require.nonNull("HTTP client factory", clientFactory);
55
56 this.sessions = Require.nonNull("Session map", sessions);
57 this.queue = Require.nonNull("New Session Request Queue", queue);
58 this.distributor = Require.nonNull("Distributor", distributor);
59
60 this.sessionHandler = new HandleSession(tracer, clientFactory, sessions);
61
62 routes =
63 combine(
64 get("/status").to(() -> new GridStatusHandler(tracer, distributor)),
65 sessions.with(new SpanDecorator(tracer, req -> "session_map")),
66 queue.with(new SpanDecorator(tracer, req -> "session_queue")),
67 distributor.with(new SpanDecorator(tracer, req -> "distributor")),
68 matching(req -> req.getUri().startsWith("/session/")).to(() -> sessionHandler));
69 }
70
71 @Override
72 public boolean isReady() {
73 try {
74 return Set.of(distributor, sessions, queue).parallelStream()
75 .map(HasReadyState::isReady)
76 .reduce(true, Boolean::logicalAnd);
77 } catch (RuntimeException e) {
78 return false;
79 }
80 }
81
82 @Override
83 public boolean matches(HttpRequest req) {
84 return routes.matches(req);
85 }
86
87 @Override
88 public HttpResponse execute(HttpRequest req) {
89 return routes.execute(req);
90 }
91
92 @Override
93 public void close() {
94 sessionHandler.close();
95 }
96}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected