Files
HaishinKit.swift/Sources/Net/NetClient.swift
T
2022-11-26 14:15:10 +09:00

41 lines
1.0 KiB
Swift

import Foundation
@objc
protocol NetClientDelegate: AnyObject {
@objc
optional func client(inputBuffer client: NetClient)
@objc
optional func client(didAccepetConnection client: NetClient)
func client(client: NetClient, isDisconnected: Bool)
}
// MARK: -
/// The NetClient class creates a two-way connection between a NetService.
public final class NetClient: NetSocket {
weak var delegate: NetClientDelegate?
init(inputStream: InputStream, outputStream: OutputStream) {
super.init()
self.inputStream = inputStream
self.outputStream = outputStream
}
override public func listen() {
delegate?.client?(inputBuffer: self)
}
func acceptConnection() {
inputQueue.async {
self.initConnection()
self.delegate?.client?(didAccepetConnection: self)
}
}
override func deinitConnection(isDisconnected: Bool) {
super.deinitConnection(isDisconnected: isDisconnected)
delegate?.client(client: self, isDisconnected: isDisconnected)
}
}