@@ -14,7 +14,13 @@ public class CometdClient: CometdClientContract {
1414 // MARK: Properties
1515 private lazy var bayeuxClient : BayeuxClientContract = BayeuxClient ( log: log, timeOut: timeOut)
1616 private lazy var subscriber : SubscriberContract = Subscriber ( bayeuxClient: bayeuxClient, log: log)
17- private lazy var transportAdapter = CometdClientTransportAdapter ( bayeuxClient: bayeuxClient, subscriber: subscriber, log: log, delegate: self )
17+ private lazy var transportAdapter = CometdClientTransportAdapter (
18+ bayeuxClient: bayeuxClient,
19+ subscriber: subscriber,
20+ log: log,
21+ delegate: self ,
22+ recorder: recorder
23+ )
1824
1925 private var forceSecure = false
2026 /// Default in 10 seconds
@@ -24,6 +30,7 @@ public class CometdClient: CometdClientContract {
2430 public var isConnected : Bool { bayeuxClient. isConnected }
2531 public var clientId : String ? { bayeuxClient. clientId }
2632
33+ public private( set) weak var recorder : CometDClientRecorder ?
2734 public weak var delegate : CometdClientDelegate ?
2835
2936 // MARK: Lifecycle
@@ -36,7 +43,7 @@ public class CometdClient: CometdClientContract {
3643 self . forceSecure = isSecure
3744 }
3845
39- public func configure( url: String , backoffIncrement: Int = 1000 , maxBackoff: Int = 60000 , appendMessageTypeToURL: Bool = false ) {
46+ public func configure( url: String , backoffIncrement: Int = 1000 , maxBackoff: Int = 60000 , appendMessageTypeToURL: Bool = false , recorder : CometDClientRecorder ? ) {
4047 // Check protocol (only websocket for now)
4148 let rawUrl = URL ( string: url)
4249 guard let path = rawUrl? . path, let host = rawUrl? . host else {
@@ -52,7 +59,8 @@ public class CometdClient: CometdClientContract {
5259 cometdURLString = scheme + host + path
5360 }
5461
55- let transport = WebsocketTransport ( url: cometdURLString, logLevel: log. outputLevel)
62+ self . recorder = recorder
63+ let transport = WebsocketTransport ( url: cometdURLString, logLevel: log. outputLevel, recorder: recorder)
5664 transport. delegate = transportAdapter
5765 self . bayeuxClient. transport = transport
5866 }
@@ -104,13 +112,13 @@ extension CometdClient: CometdClientTransportAdapterDelegate {
104112 delegate? . didReceivePong ( from: self )
105113 }
106114 func didWriteError( error: Error , from adapter: CometdClientTransportAdapter ) {
107- delegate? . didWriteError ( error: error , from: self )
115+ delegate? . didWriteError ( error: CometDClientError . write , from: self )
108116 }
109- func didFailConnection ( error: Error ? , from adapter: CometdClientTransportAdapter ) {
110- delegate? . didFailConnection ( error: error , from: self )
117+ func didLostConnection ( error: Error , from adapter: CometdClientTransportAdapter ) {
118+ delegate? . didLostConnection ( error: CometDClientError . lostConnection , from: self )
111119 }
112- func didDisconnected( error: Error ? , from adapter: CometdClientTransportAdapter ) {
113- delegate? . didDisconnected ( error: error , from: self )
120+ func didDisconnected( error: Error , from adapter: CometdClientTransportAdapter ) {
121+ delegate? . didDisconnected ( error: CometDClientError . lostConnection , from: self )
114122 }
115123}
116124
@@ -122,8 +130,15 @@ extension CometdClient: CometdClientMessageResolverDelegate {
122130 func handshakeDidSucceeded( dictionary: NSDictionary , from resolver: CometdClientMessageResolver ) {
123131 delegate? . handshakeDidSucceeded ( dictionary: dictionary, from: self )
124132 }
125- func handshakeDidFailed( from resolver: CometdClientMessageResolver ) {
126- delegate? . handshakeDidFailed ( from: self )
133+ func handshakeDidFailed( error: Error , from resolver: CometdClientMessageResolver ) {
134+ let handshakeError : CometDClientError
135+ switch error {
136+ case let error as CometdClientMessageResolverError where error. code == CometdClientMessageResolverError . Constant. SIMPLE_UNMATCHED_LOGIN_PASSWORD:
137+ handshakeError = . handshake( reason: HandshakeError . wrongCredential)
138+ default :
139+ handshakeError = . handshake( reason: nil )
140+ }
141+ delegate? . handshakeDidFailed ( error: handshakeError, from: self )
127142 }
128143 func didDisconnected( from adapter: CometdClientMessageResolver ) {
129144 delegate? . didDisconnected ( error: nil , from: self )
@@ -140,7 +155,7 @@ extension CometdClient: CometdClientMessageResolverDelegate {
140155 func didUnsubscribeFromChannel( channel: String , from resolver: CometdClientMessageResolver ) {
141156 delegate? . didUnsubscribeFromChannel ( channel: channel, from: self )
142157 }
143- func subscriptionFailedWithError( error: SubscriptionError , from resolver: CometdClientMessageResolver ) {
144- delegate? . subscriptionFailedWithError ( error: error , from: self )
158+ func subscriptionFailedWithError( error: Error , from resolver: CometdClientMessageResolver ) {
159+ delegate? . subscriptionFailedWithError ( error: CometDClientError . subscription , from: self )
145160 }
146161}
0 commit comments