handleRemoteOpenedStream method
void
handleRemoteOpenedStream(
- UDXPacket packet,
- Uint8List rawData,
- InternetAddress remoteAddress,
- int remotePort,
Implementation
void handleRemoteOpenedStream(UDXPacket packet, Uint8List rawData, InternetAddress remoteAddress, int remotePort) {
_logger.fine('[UDXSessionConn $id] handleRemoteOpenedStream called by UDXListener. Packet for destId: ${packet.destinationStreamId}, srcId: ${packet.sourceStreamId}');
if (_isClosed) {
_logger.fine('[UDXSessionConn $id] Session closed, ignoring handleRemoteOpenedStream.');
return;
}
try {
final localId = packet.destinationStreamId;
final remoteId = packet.sourceStreamId;
_logger.fine('[UDXSessionConn $id] Creating incoming UDXStream for remote-opened stream. LocalId: $localId, RemoteId: $remoteId');
final newRemoteStream = UDXStream.createIncoming(
_transport._udxInstance,
_udpSocket,
localId,
remoteId,
remoteAddress.address,
remotePort,
destinationCid: packet.destinationCid,
sourceCid: packet.sourceCid,
);
_logger.fine('[UDXSessionConn $id] Incoming UDXStream created: ${newRemoteStream.id}');
newRemoteStream.internalHandleSocketEvent({
'data': rawData,
'address': remoteAddress.address,
'port': remotePort,
});
_logger.fine('[UDXSessionConn $id] Handled socket event for new incoming UDXStream ${newRemoteStream.id}');
final adapter = UDXP2PStreamAdapter(
udxStream: newRemoteStream,
parentConn: this,
direction: Direction.inbound,
);
_activeStreams[newRemoteStream.id] = adapter;
_logger.fine('[UDXSessionConn $id] Adapted new incoming UDXStream ${newRemoteStream.id} and added to active streams.');
if (!_incomingStreamsController.isClosed) {
_incomingStreamsController.add(adapter);
_logger.fine('[UDXSessionConn $id] Added new stream adapter ${adapter.id()} to incoming streams controller.');
} else {
_logger.fine('[UDXSessionConn $id] (Listener-Side): Incoming stream controller closed, closing new remote stream ${newRemoteStream.id}');
adapter.close();
_activeStreams.remove(newRemoteStream.id);
}
} catch (e, s) {
_logger.fine('[UDXSessionConn $id] (Listener-Side): Error handling remote opened stream: $e\n$s');
}
}