// IWcfPeripheralHost bool IWcfPeripheralHost.Initialize(string serviceUUID, string uploadUUID, string downloadUUID) { Utils.Info("Initialize: {0}, {1}, {2}", serviceUUID, uploadUUID, downloadUUID); lock (mLockObject) { if (mStatus != Status.Invalid) { Utils.Error("invalid status: {0}", mStatus.ToString()); return(false); } try { mCallback = OperationContext.Current.GetCallbackChannel <IWcfPeripheralCallback>(); mServiceUUID = new Guid(serviceUUID); mUploadUUID = new Guid(uploadUUID); mDownloadUUID = new Guid(downloadUUID); } catch (Exception e) { Utils.Error(e.ToString()); CleanupInternal(); return(false); } SetStatus(Status.Initialize); InitializeInternal(); } return(true); }
private void CleanupInternal() { if (mStatus == Status.Advertise) { mServiceProvider.StopAdvertising(); } SetStatus(Status.Invalid); if (mInitializationCancelTokenSource != null) { mInitializationCancelTokenSource.Dispose(); mInitializationCancelTokenSource = null; } mUploadCharacteristic = null; mDownloadCharacteristic = null; mServiceProvider = null; mSubscribedCentrals.Clear(); // TODO mCallback = null; mFinished = true; }