diff --git a/PeerKit/Transceiver.swift b/PeerKit/Transceiver.swift index 37cddc2..4690599 100644 --- a/PeerKit/Transceiver.swift +++ b/PeerKit/Transceiver.swift @@ -16,18 +16,26 @@ enum TransceiverMode { public class Transceiver: SessionDelegate { var transceiverMode = TransceiverMode.Both - let session: Session - let advertiser: Advertiser - let browser: Browser + var session: Session! + var advertiser: Advertiser! + var browser: Browser! + var aDisplayName:String! public init(displayName: String!) { - session = Session(displayName: displayName, delegate: nil) - advertiser = Advertiser(mcSession: session.mcSession) - browser = Browser(mcSession: session.mcSession) - session.delegate = self + aDisplayName = displayName + } + + func initIfNil(){ + if session == nil { + session = Session(displayName: aDisplayName, delegate: nil) + advertiser = Advertiser(mcSession: session.mcSession) + browser = Browser(mcSession: session.mcSession) + session.delegate = self + } } func startTransceiving(#serviceType: String, discoveryInfo: [String: String]? = nil) { + initIfNil() advertiser.startAdvertising(serviceType: serviceType, discoveryInfo: discoveryInfo) browser.startBrowsing(serviceType) transceiverMode = .Both @@ -38,6 +46,9 @@ public class Transceiver: SessionDelegate { advertiser.stopAdvertising() browser.stopBrowsing() session.disconnect() + session = nil + advertiser = nil + browser = nil } func startAdvertising(#serviceType: String, discoveryInfo: [String: String]? = nil) {