fix warning

This commit is contained in:
anlicheng 2025-07-14 17:10:55 +08:00
parent 83ae28387e
commit e19617961c
3 changed files with 30 additions and 45 deletions

View File

@ -19,11 +19,10 @@ import NIOCore
import NIOPosix import NIOPosix
// sn-server // sn-server
class SDLNoticeClient: ChannelInboundHandler { class SDLNoticeClient: ChannelInboundHandler, @unchecked Sendable {
public typealias InboundIn = AddressedEnvelope<ByteBuffer> public typealias InboundIn = AddressedEnvelope<ByteBuffer>
public typealias OutboundOut = AddressedEnvelope<ByteBuffer> public typealias OutboundOut = AddressedEnvelope<ByteBuffer>
private var thread: Thread?
var context: ChannelHandlerContext? var context: ChannelHandlerContext?
private let group = MultiThreadedEventLoopGroup(numberOfThreads: 1) private let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
private let remoteAddress: SocketAddress private let remoteAddress: SocketAddress
@ -34,21 +33,18 @@ class SDLNoticeClient: ChannelInboundHandler {
// //
func start() { func start() {
self.thread = Thread { let bootstrap = DatagramBootstrap(group: self.group)
let bootstrap = DatagramBootstrap(group: self.group) .channelOption(ChannelOptions.socketOption(.so_reuseaddr), value: 1)
.channelOption(ChannelOptions.socketOption(.so_reuseaddr), value: 1) .channelInitializer { channel in
.channelInitializer { channel in //
// channel.pipeline.addHandler(self)
channel.pipeline.addHandler(self) }
}
let channel = try! bootstrap.bind(host: "0.0.0.0", port: 0).wait() let channel = try! bootstrap.bind(host: "0.0.0.0", port: 0).wait()
SDLLogger.log("[SDLNoticeClient] started and listening on: \(channel.localAddress!)", level: .debug) SDLLogger.log("[SDLNoticeClient] started and listening on: \(channel.localAddress!)", level: .debug)
// This will never unblock as we don't close the channel // This will never unblock as we don't close the channel
try! channel.closeFuture.wait() try! channel.closeFuture.wait()
}
self.thread?.start()
} }
// -- MARK: ChannelInboundHandler Methods // -- MARK: ChannelInboundHandler Methods
@ -80,16 +76,15 @@ class SDLNoticeClient: ChannelInboundHandler {
return return
} }
let remoteAddress = self.remoteAddress
context.eventLoop.execute { context.eventLoop.execute {
let buffer = context.channel.allocator.buffer(bytes: data) let buffer = context.channel.allocator.buffer(bytes: data)
let envelope = AddressedEnvelope<ByteBuffer>(remoteAddress: remoteAddress, data: buffer)
let envelope = AddressedEnvelope<ByteBuffer>(remoteAddress: self.remoteAddress, data: buffer)
context.writeAndFlush(self.wrapOutboundOut(envelope), promise: nil) context.writeAndFlush(self.wrapOutboundOut(envelope), promise: nil)
} }
} }
deinit { deinit {
self.thread?.cancel()
try? self.group.syncShutdownGracefully() try? self.group.syncShutdownGracefully()
} }
} }

View File

@ -11,7 +11,7 @@ import NIOPosix
import Combine import Combine
// --MARK: SuperNode // --MARK: SuperNode
class SDLSuperClient: ChannelInboundHandler { class SDLSuperClient: ChannelInboundHandler, @unchecked Sendable {
public typealias InboundIn = ByteBuffer public typealias InboundIn = ByteBuffer
public typealias OutboundOut = ByteBuffer public typealias OutboundOut = ByteBuffer
@ -302,21 +302,21 @@ extension SDLSuperClient {
return .init(msgId: msgId, packet: .empty) return .init(msgId: msgId, packet: .empty)
case .registerSuperAck: case .registerSuperAck:
guard let bytes = buffer.readBytes(length: buffer.readableBytes), guard let bytes = buffer.readBytes(length: buffer.readableBytes),
let registerSuperAck = try? SDLRegisterSuperAck(serializedData: Data(bytes)) else { let registerSuperAck = try? SDLRegisterSuperAck(serializedBytes: bytes) else {
return nil return nil
} }
return .init(msgId: msgId, packet: .registerSuperAck(registerSuperAck)) return .init(msgId: msgId, packet: .registerSuperAck(registerSuperAck))
case .registerSuperNak: case .registerSuperNak:
guard let bytes = buffer.readBytes(length: buffer.readableBytes), guard let bytes = buffer.readBytes(length: buffer.readableBytes),
let registerSuperNak = try? SDLRegisterSuperNak(serializedData: Data(bytes)) else { let registerSuperNak = try? SDLRegisterSuperNak(serializedBytes: bytes) else {
return nil return nil
} }
return .init(msgId: msgId, packet: .registerSuperNak(registerSuperNak)) return .init(msgId: msgId, packet: .registerSuperNak(registerSuperNak))
case .peerInfo: case .peerInfo:
guard let bytes = buffer.readBytes(length: buffer.readableBytes), guard let bytes = buffer.readBytes(length: buffer.readableBytes),
let peerInfo = try? SDLPeerInfo(serializedData: Data(bytes)) else { let peerInfo = try? SDLPeerInfo(serializedBytes: bytes) else {
return nil return nil
} }
@ -333,7 +333,7 @@ extension SDLSuperClient {
switch command { switch command {
case .changeNetwork: case .changeNetwork:
guard let changeNetworkCommand = try? SDLChangeNetworkCommand(serializedData: Data(bytes)) else { guard let changeNetworkCommand = try? SDLChangeNetworkCommand(serializedBytes: bytes) else {
return nil return nil
} }
@ -349,17 +349,17 @@ extension SDLSuperClient {
switch event { switch event {
case .natChanged: case .natChanged:
guard let natChangedEvent = try? SDLNatChangedEvent(serializedData: Data(bytes)) else { guard let natChangedEvent = try? SDLNatChangedEvent(serializedBytes: bytes) else {
return nil return nil
} }
return .init(msgId: msgId, packet: .event(.natChanged(natChangedEvent))) return .init(msgId: msgId, packet: .event(.natChanged(natChangedEvent)))
case .sendRegister: case .sendRegister:
guard let sendRegisterEvent = try? SDLSendRegisterEvent(serializedData: Data(bytes)) else { guard let sendRegisterEvent = try? SDLSendRegisterEvent(serializedBytes: bytes) else {
return nil return nil
} }
return .init(msgId: msgId, packet: .event(.sendRegister(sendRegisterEvent))) return .init(msgId: msgId, packet: .event(.sendRegister(sendRegisterEvent)))
case .networkShutdown: case .networkShutdown:
guard let networkShutdownEvent = try? SDLNetworkShutdownEvent(serializedData: Data(bytes)) else { guard let networkShutdownEvent = try? SDLNetworkShutdownEvent(serializedBytes: bytes) else {
return nil return nil
} }
return .init(msgId: msgId, packet: .event(.networkShutdown(networkShutdownEvent))) return .init(msgId: msgId, packet: .event(.networkShutdown(networkShutdownEvent)))

View File

@ -11,7 +11,7 @@ import NIOPosix
import Combine import Combine
// sn-server // sn-server
class SDLUDPHole: ChannelInboundHandler { class SDLUDPHole: ChannelInboundHandler, @unchecked Sendable {
public typealias InboundIn = AddressedEnvelope<ByteBuffer> public typealias InboundIn = AddressedEnvelope<ByteBuffer>
public typealias OutboundOut = AddressedEnvelope<ByteBuffer> public typealias OutboundOut = AddressedEnvelope<ByteBuffer>
@ -219,23 +219,13 @@ class SDLUDPHole: ChannelInboundHandler {
return return
} }
// Eventloop线 channel.eventLoop.execute {
if channel.eventLoop.inEventLoop {
var buffer = channel.allocator.buffer(capacity: data.count + 1) var buffer = channel.allocator.buffer(capacity: data.count + 1)
buffer.writeBytes([type.rawValue]) buffer.writeBytes([type.rawValue])
buffer.writeBytes(data) buffer.writeBytes(data)
let envelope = AddressedEnvelope<ByteBuffer>(remoteAddress: remoteAddress, data: buffer) let envelope = AddressedEnvelope<ByteBuffer>(remoteAddress: remoteAddress, data: buffer)
channel.writeAndFlush(self.wrapOutboundOut(envelope), promise: nil) channel.writeAndFlush(self.wrapOutboundOut(envelope), promise: nil)
} else {
channel.eventLoop.execute {
var buffer = channel.allocator.buffer(capacity: data.count + 1)
buffer.writeBytes([type.rawValue])
buffer.writeBytes(data)
let envelope = AddressedEnvelope<ByteBuffer>(remoteAddress: remoteAddress, data: buffer)
channel.writeAndFlush(self.wrapOutboundOut(envelope), promise: nil)
}
} }
} }
@ -257,19 +247,19 @@ extension SDLUDPHole {
switch packetType { switch packetType {
case .data: case .data:
let dataPacket = try SDLData(serializedData: Data(bytes)) let dataPacket = try SDLData(serializedBytes: bytes)
return .data(dataPacket) return .data(dataPacket)
case .register: case .register:
let registerPacket = try SDLRegister(serializedData: Data(bytes)) let registerPacket = try SDLRegister(serializedBytes: bytes)
return .register(registerPacket) return .register(registerPacket)
case .registerAck: case .registerAck:
let registerAck = try SDLRegisterAck(serializedData: Data(bytes)) let registerAck = try SDLRegisterAck(serializedBytes: bytes)
return .registerAck(registerAck) return .registerAck(registerAck)
case .stunReply: case .stunReply:
let stunReply = try SDLStunReply(serializedData: Data(bytes)) let stunReply = try SDLStunReply(serializedBytes: bytes)
return .stunReply(stunReply) return .stunReply(stunReply)
case .stunProbeReply: case .stunProbeReply:
let stunProbeReply = try SDLStunProbeReply(serializedData: Data(bytes)) let stunProbeReply = try SDLStunProbeReply(serializedBytes: bytes)
return .stunProbeReply(stunProbeReply) return .stunProbeReply(stunProbeReply)
default: default:
return nil return nil