示例#1
0
        // 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);
        }
示例#2
0
        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;
        }