Skip to content

Commit 771b837

Browse files
app{websocket): Refactor transport type annotations and improve event handling in QUIC connection
1 parent 93db588 commit 771b837

File tree

4 files changed

+12
-11
lines changed

4 files changed

+12
-11
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,4 @@ tests/interop/js_libp2p/js_node/src/node_modules/
184184
tests/interop/js_libp2p/js_node/src/package-lock.json
185185

186186
# Sphinx documentation build
187-
_build/
187+
_build/

libp2p/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def new_swarm(
203203

204204
id_opt = generate_peer_id_from(key_pair)
205205

206-
transport: TCP | QUICTransport
206+
transport: TCP | QUICTransport | ITransport
207207
quic_transport_opt = connection_config if isinstance(connection_config, QUICTransportConfig) else None
208208

209209
if listen_addrs is None:
@@ -261,7 +261,6 @@ def new_swarm(
261261
)
262262

263263
# Create transport based on listen_addrs or default to TCP
264-
transport: ITransport
265264
if listen_addrs is None:
266265
transport = TCP()
267266
else:
@@ -274,7 +273,7 @@ def new_swarm(
274273
if addr.__contains__("tcp"):
275274
transport = TCP()
276275
elif addr.__contains__("quic"):
277-
raise ValueError("QUIC not yet supported")
276+
transport = QUICTransport(key_pair.private_key, config=quic_transport_opt)
278277
else:
279278
supported_protocols = get_supported_transport_protocols()
280279
raise ValueError(

libp2p/network/swarm.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,8 @@ async def listen(self, *multiaddrs: Multiaddr) -> bool:
491491
logger.debug(f"Swarm.listen processing multiaddr: {maddr}")
492492
if str(maddr) in self.listeners:
493493
logger.debug(f"Swarm.listen: listener already exists for {maddr}")
494-
return True
495-
success_count += 1
496-
continue
494+
success_count += 1
495+
continue
497496

498497
async def conn_handler(
499498
read_write_closer: ReadWriteCloser, maddr: Multiaddr = maddr
@@ -557,6 +556,7 @@ async def conn_handler(
557556
# I/O agnostic, we should change the API.
558557
if self.listener_nursery is None:
559558
raise SwarmException("swarm instance hasn't been run")
559+
assert self.listener_nursery is not None # For type checker
560560
logger.debug(f"Swarm.listen: calling listener.listen for {maddr}")
561561
await listener.listen(maddr, self.listener_nursery)
562562
logger.debug(f"Swarm.listen: listener.listen completed for {maddr}")

libp2p/transport/quic/connection.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import logging
99
import socket
1010
import time
11-
from typing import TYPE_CHECKING, Any, Optional, cast
11+
from typing import TYPE_CHECKING, Any, Optional
1212

1313
from aioquic.quic import events
1414
from aioquic.quic.connection import QuicConnection
@@ -871,9 +871,11 @@ async def _process_event_batch(self) -> None:
871871
# Process events by type
872872
for event_type, event_list in events_by_type.items():
873873
if event_type == type(events.StreamDataReceived).__name__:
874-
await self._handle_stream_data_batch(
875-
cast(list[events.StreamDataReceived], event_list)
876-
)
874+
# Filter to only StreamDataReceived events
875+
stream_data_events = [
876+
e for e in event_list if isinstance(e, events.StreamDataReceived)
877+
]
878+
await self._handle_stream_data_batch(stream_data_events)
877879
else:
878880
# Process other events individually
879881
for event in event_list:

0 commit comments

Comments
 (0)