fix warning
This commit is contained in:
parent
83ae28387e
commit
e19617961c
@ -19,11 +19,10 @@ import NIOCore
|
||||
import NIOPosix
|
||||
|
||||
// 处理和sn-server服务器之间的通讯
|
||||
class SDLNoticeClient: ChannelInboundHandler {
|
||||
class SDLNoticeClient: ChannelInboundHandler, @unchecked Sendable {
|
||||
public typealias InboundIn = AddressedEnvelope<ByteBuffer>
|
||||
public typealias OutboundOut = AddressedEnvelope<ByteBuffer>
|
||||
|
||||
private var thread: Thread?
|
||||
var context: ChannelHandlerContext?
|
||||
private let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
|
||||
private let remoteAddress: SocketAddress
|
||||
@ -34,7 +33,6 @@ class SDLNoticeClient: ChannelInboundHandler {
|
||||
|
||||
// 启动函数
|
||||
func start() {
|
||||
self.thread = Thread {
|
||||
let bootstrap = DatagramBootstrap(group: self.group)
|
||||
.channelOption(ChannelOptions.socketOption(.so_reuseaddr), value: 1)
|
||||
.channelInitializer { channel in
|
||||
@ -48,8 +46,6 @@ class SDLNoticeClient: ChannelInboundHandler {
|
||||
// This will never unblock as we don't close the channel
|
||||
try! channel.closeFuture.wait()
|
||||
}
|
||||
self.thread?.start()
|
||||
}
|
||||
|
||||
// -- MARK: ChannelInboundHandler Methods
|
||||
|
||||
@ -80,16 +76,15 @@ class SDLNoticeClient: ChannelInboundHandler {
|
||||
return
|
||||
}
|
||||
|
||||
let remoteAddress = self.remoteAddress
|
||||
context.eventLoop.execute {
|
||||
let buffer = context.channel.allocator.buffer(bytes: data)
|
||||
|
||||
let envelope = AddressedEnvelope<ByteBuffer>(remoteAddress: self.remoteAddress, data: buffer)
|
||||
let envelope = AddressedEnvelope<ByteBuffer>(remoteAddress: remoteAddress, data: buffer)
|
||||
context.writeAndFlush(self.wrapOutboundOut(envelope), promise: nil)
|
||||
}
|
||||
}
|
||||
|
||||
deinit {
|
||||
self.thread?.cancel()
|
||||
try? self.group.syncShutdownGracefully()
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@ import NIOPosix
|
||||
import Combine
|
||||
|
||||
// --MARK: 和SuperNode的客户端
|
||||
class SDLSuperClient: ChannelInboundHandler {
|
||||
class SDLSuperClient: ChannelInboundHandler, @unchecked Sendable {
|
||||
public typealias InboundIn = ByteBuffer
|
||||
public typealias OutboundOut = ByteBuffer
|
||||
|
||||
@ -302,21 +302,21 @@ extension SDLSuperClient {
|
||||
return .init(msgId: msgId, packet: .empty)
|
||||
case .registerSuperAck:
|
||||
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 .init(msgId: msgId, packet: .registerSuperAck(registerSuperAck))
|
||||
|
||||
case .registerSuperNak:
|
||||
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 .init(msgId: msgId, packet: .registerSuperNak(registerSuperNak))
|
||||
|
||||
case .peerInfo:
|
||||
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
|
||||
}
|
||||
|
||||
@ -333,7 +333,7 @@ extension SDLSuperClient {
|
||||
|
||||
switch command {
|
||||
case .changeNetwork:
|
||||
guard let changeNetworkCommand = try? SDLChangeNetworkCommand(serializedData: Data(bytes)) else {
|
||||
guard let changeNetworkCommand = try? SDLChangeNetworkCommand(serializedBytes: bytes) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -349,17 +349,17 @@ extension SDLSuperClient {
|
||||
|
||||
switch event {
|
||||
case .natChanged:
|
||||
guard let natChangedEvent = try? SDLNatChangedEvent(serializedData: Data(bytes)) else {
|
||||
guard let natChangedEvent = try? SDLNatChangedEvent(serializedBytes: bytes) else {
|
||||
return nil
|
||||
}
|
||||
return .init(msgId: msgId, packet: .event(.natChanged(natChangedEvent)))
|
||||
case .sendRegister:
|
||||
guard let sendRegisterEvent = try? SDLSendRegisterEvent(serializedData: Data(bytes)) else {
|
||||
guard let sendRegisterEvent = try? SDLSendRegisterEvent(serializedBytes: bytes) else {
|
||||
return nil
|
||||
}
|
||||
return .init(msgId: msgId, packet: .event(.sendRegister(sendRegisterEvent)))
|
||||
case .networkShutdown:
|
||||
guard let networkShutdownEvent = try? SDLNetworkShutdownEvent(serializedData: Data(bytes)) else {
|
||||
guard let networkShutdownEvent = try? SDLNetworkShutdownEvent(serializedBytes: bytes) else {
|
||||
return nil
|
||||
}
|
||||
return .init(msgId: msgId, packet: .event(.networkShutdown(networkShutdownEvent)))
|
||||
|
||||
@ -11,7 +11,7 @@ import NIOPosix
|
||||
import Combine
|
||||
|
||||
// 处理和sn-server服务器之间的通讯
|
||||
class SDLUDPHole: ChannelInboundHandler {
|
||||
class SDLUDPHole: ChannelInboundHandler, @unchecked Sendable {
|
||||
public typealias InboundIn = AddressedEnvelope<ByteBuffer>
|
||||
public typealias OutboundOut = AddressedEnvelope<ByteBuffer>
|
||||
|
||||
@ -219,15 +219,6 @@ class SDLUDPHole: ChannelInboundHandler {
|
||||
return
|
||||
}
|
||||
|
||||
// 在Eventloop中时直接写入数据避免线程切换
|
||||
if channel.eventLoop.inEventLoop {
|
||||
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)
|
||||
} else {
|
||||
channel.eventLoop.execute {
|
||||
var buffer = channel.allocator.buffer(capacity: data.count + 1)
|
||||
buffer.writeBytes([type.rawValue])
|
||||
@ -237,7 +228,6 @@ class SDLUDPHole: ChannelInboundHandler {
|
||||
channel.writeAndFlush(self.wrapOutboundOut(envelope), promise: nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
deinit {
|
||||
try? self.group.syncShutdownGracefully()
|
||||
@ -257,19 +247,19 @@ extension SDLUDPHole {
|
||||
|
||||
switch packetType {
|
||||
case .data:
|
||||
let dataPacket = try SDLData(serializedData: Data(bytes))
|
||||
let dataPacket = try SDLData(serializedBytes: bytes)
|
||||
return .data(dataPacket)
|
||||
case .register:
|
||||
let registerPacket = try SDLRegister(serializedData: Data(bytes))
|
||||
let registerPacket = try SDLRegister(serializedBytes: bytes)
|
||||
return .register(registerPacket)
|
||||
case .registerAck:
|
||||
let registerAck = try SDLRegisterAck(serializedData: Data(bytes))
|
||||
let registerAck = try SDLRegisterAck(serializedBytes: bytes)
|
||||
return .registerAck(registerAck)
|
||||
case .stunReply:
|
||||
let stunReply = try SDLStunReply(serializedData: Data(bytes))
|
||||
let stunReply = try SDLStunReply(serializedBytes: bytes)
|
||||
return .stunReply(stunReply)
|
||||
case .stunProbeReply:
|
||||
let stunProbeReply = try SDLStunProbeReply(serializedData: Data(bytes))
|
||||
let stunProbeReply = try SDLStunProbeReply(serializedBytes: bytes)
|
||||
return .stunProbeReply(stunProbeReply)
|
||||
default:
|
||||
return nil
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user