Skip to content
This repository was archived by the owner on Dec 13, 2023. It is now read-only.

Commit c38edc0

Browse files
authored
Merge pull request #46 from Orange-OpenSource/addUnmanageStream
add unmanage stream
2 parents a24829a + 5e010fe commit c38edc0

File tree

4 files changed

+31
-7
lines changed

4 files changed

+31
-7
lines changed

OCast/Core/Application/ApplicationController.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,18 @@ public class ApplicationController: NSObject, DataStream, HttpProtocol {
199199
OCastLog.error("Unable to manage stream (\(stream.serviceId) because browser is nil")
200200
}
201201
}
202+
203+
/// Used to release control over a user's specific stream.
204+
///
205+
/// - Parameter stream: custom stream to be unmanaged
206+
public func unmanage(stream: DataStream) {
207+
if let browser = browser {
208+
stream.dataSender = nil
209+
browser.unregister(stream: stream)
210+
} else {
211+
OCastLog.error("Unable to unmanage stream (\(stream.serviceId) because browser is nil")
212+
}
213+
}
202214

203215
// MARK: private methods
204216
private func startApplication(onSuccess: @escaping () -> Void, onError: @escaping (_ error: NSError?) -> Void) {

OCast/Core/Application/Media/Browser.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ import Foundation
3030
///
3131
/// - Parameter delegate: delegate
3232
func register(for delegate: EventDelegate)
33+
/// unregister an event delegate
34+
///
35+
/// - Parameter delegate: delegate
36+
func unregister(for delegate: EventDelegate)
3337
}
3438

3539
final class Browser: NSObject, EventDelegate {
@@ -45,6 +49,10 @@ final class Browser: NSObject, EventDelegate {
4549
func register(stream: DataStream) {
4650
streams.setObject(stream, forKey: stream.serviceId as NSString)
4751
}
52+
53+
func unregister(stream: DataStream) {
54+
streams.removeObject(forKey: stream.serviceId as NSString)
55+
}
4856

4957
func send(data: [String: Any], for service: String, onSuccess: @escaping ([String: Any]?) -> Void, onError: @escaping (NSError?) -> Void) {
5058

OCast/ReferenceDriver/Driver/ReferenceDriver.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import Foundation
2020
/// Provides the Reference driver implementation.
2121
@objcMembers
2222
@objc open class ReferenceDriver: NSObject, Driver, LinkDelegate {
23-
23+
2424
/// Success and error callbacks
2525
private struct Callback {
2626
let success: () -> Void
@@ -303,4 +303,8 @@ import Foundation
303303
public func register(for browser: EventDelegate) {
304304
self.browserEventDelegate = browser
305305
}
306+
307+
public func unregister(for delegate: EventDelegate) {
308+
browserEventDelegate = nil
309+
}
306310
}

Podfile.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
PODS:
22
- CocoaAsyncSocket (7.6.3)
3-
- OCast (1.3.0):
4-
- OCast/Core (= 1.3.0)
5-
- OCast/ReferenceDriver (= 1.3.0)
6-
- OCast/Core (1.3.0):
3+
- OCast (1.4.1):
4+
- OCast/Core (= 1.4.1)
5+
- OCast/ReferenceDriver (= 1.4.1)
6+
- OCast/Core (1.4.1):
77
- CocoaAsyncSocket (= 7.6.3)
8-
- OCast/ReferenceDriver (1.3.0):
8+
- OCast/ReferenceDriver (1.4.1):
99
- OCast/Core
1010
- Swifter (1.4.1)
1111

@@ -32,7 +32,7 @@ CHECKOUT OPTIONS:
3232

3333
SPEC CHECKSUMS:
3434
CocoaAsyncSocket: eafaa68a7e0ec99ead0a7b35015e0bf25d2c8987
35-
OCast: 572339d7ce5f5b940174a5dd6b0acc83aeba5a98
35+
OCast: f79be2a54a9bb76236eedef6fa991672b68b30c2
3636
Swifter: 62d14781d34600ffb6be99d350cf271be500600f
3737

3838
PODFILE CHECKSUM: a802031d5c938076042ae8fd28af776322dfd580

0 commit comments

Comments
 (0)