mirror of
https://github.com/HaishinKit/HaishinKit.swift.git
synced 2026-06-06 20:17:36 +00:00
41 lines
1.0 KiB
Swift
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)
|
|
}
|
|
}
|