MCPcopy Index your code
hub / github.com/python/cpython / Server

Class Server

Lib/asyncio/base_events.py:277–418  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

275
276
277class Server(events.AbstractServer):
278
279 def __init__(self, loop, sockets, protocol_factory, ssl_context, backlog,
280 ssl_handshake_timeout, ssl_shutdown_timeout=None):
281 self._loop = loop
282 self._sockets = sockets
283 # Weak references so we don't break Transport's ability to
284 # detect abandoned transports
285 self._clients = weakref.WeakSet()
286 self._waiters = []
287 self._protocol_factory = protocol_factory
288 self._backlog = backlog
289 self._ssl_context = ssl_context
290 self._ssl_handshake_timeout = ssl_handshake_timeout
291 self._ssl_shutdown_timeout = ssl_shutdown_timeout
292 self._serving = False
293 self._serving_forever_fut = None
294 self._context = contextvars.copy_context()
295
296 def __repr__(self):
297 return f'<{self.__class__.__name__} sockets={self.sockets!r}>'
298
299 def _attach(self, transport):
300 assert self._sockets is not None
301 self._clients.add(transport)
302
303 def _detach(self, transport):
304 self._clients.discard(transport)
305 if len(self._clients) == 0 and self._sockets is None:
306 self._wakeup()
307
308 def _wakeup(self):
309 waiters = self._waiters
310 self._waiters = None
311 for waiter in waiters:
312 if not waiter.done():
313 waiter.set_result(None)
314
315 def _start_serving(self):
316 if self._serving:
317 return
318 self._serving = True
319 for sock in self._sockets:
320 sock.listen(self._backlog)
321 self._loop._start_serving(
322 self._protocol_factory, sock, self._ssl_context,
323 self, self._backlog, self._ssl_handshake_timeout,
324 self._ssl_shutdown_timeout, context=self._context)
325
326 def get_loop(self):
327 return self._loop
328
329 def is_serving(self):
330 return self._serving
331
332 @property
333 def sockets(self):
334 if self._sockets is None:

Callers 1

create_serverMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…