示例#1
0
文件: Page.cs 项目: hello-web/PdfPig
        internal Page(int number, DictionaryToken dictionary, MediaBox mediaBox, CropBox cropBox, PageRotationDegrees rotation, PageContent content,
                      AnnotationProvider annotationProvider,
                      IPdfTokenScanner pdfScanner)
        {
            if (number <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(number), "Page number cannot be 0 or negative.");
            }

            Dictionary = dictionary ?? throw new ArgumentNullException(nameof(dictionary));

            Number   = number;
            MediaBox = mediaBox;
            CropBox  = cropBox;
            Rotation = rotation;
            Content  = content;
            textLazy = new Lazy <string>(() => GetText(Content));

            Width  = mediaBox.Bounds.Width;
            Height = mediaBox.Bounds.Height;

            Size = mediaBox.Bounds.GetPageSize();
            ExperimentalAccess      = new Experimental(this, annotationProvider);
            this.annotationProvider = annotationProvider;
            this.pdfScanner         = pdfScanner ?? throw new ArgumentNullException(nameof(pdfScanner));
        }
示例#2
0
        public void SaveSuccsefulExperimentalSession(Experimental newSession)
        {
            if (null == PacientsData[CurrentPacient.ID].lastExperimentalSessions)
            {
                PacientsData[CurrentPacient.ID].lastExperimentalSessions = new List <Experimental>();
            }

            bool alreadyExists = false;
            int  existsIndex   = -1;

            for (int i = 0; i < PacientsData[CurrentPacient.ID].lastExperimentalSessions.Count && !alreadyExists; i++)
            {
                if (PacientsData[CurrentPacient.ID].lastExperimentalSessions[i].tone.FrequencyIndex == newSession.tone.FrequencyIndex)
                {
                    if (PacientsData[CurrentPacient.ID].lastExperimentalSessions[i].tone.Ear == newSession.tone.Ear)
                    {
                        alreadyExists = true;
                        existsIndex   = i;
                    }
                }
            }

            if (alreadyExists)
            {
                PacientsData[CurrentPacient.ID].lastExperimentalSessions[existsIndex] = newSession;
            }
            else
            {
                PacientsData[CurrentPacient.ID].lastExperimentalSessions.Add(newSession);
            }

            PacientsData[CurrentPacient.ID].lastTestDate = DateTime.Now.ToString("dd/MM/yyyy");

            SavePacientData();
        }
        public override void SessionEnd(bool sessionSucceeded)
        {
            OngoingTest = false;

            if (sessionSucceeded)
            {
                DataManager.Instance.SaveSuccsefulExperimentalSession(currentSession as Experimental);

                if (toneManager.currentDB > ToneSettingsManager.dbMin)
                {
                    toneManager.DecreaseDB();
                    heardFreq = true;
                }
                else
                {
                    NextFrequency();
                }

                if (null == onLimitSucceedSession)
                {
                    onLimitSucceedSession = currentSession as Experimental;
                    preOnPostText[1].text = frequencies[currentSession.tone.FrequencyIndex] + " Hz\n" + currentSession.tone.dB + " dB";
                }
                else
                {
                    postLimitSucceedSession = onLimitSucceedSession;
                    onLimitSucceedSession   = currentSession as Experimental;
                    preOnPostText[1].text   = frequencies[currentSession.tone.FrequencyIndex] + " Hz\n" + currentSession.tone.dB + " dB";
                    preOnPostText[2].text   = frequencies[postLimitSucceedSession.tone.FrequencyIndex] + " Hz\n" + postLimitSucceedSession.tone.dB + " dB";
                }
            }
            else
            {
                if (!heardFreq || toneManager.currentDB == ToneSettingsManager.dbMax)
                {
                    toneManager.IncreaseVolume();
                    toneManager.IncreaseVolume();
                }
                else
                {
                    NextFrequency();
                }

                preLimitFailedSession = currentSession as Experimental;
                preOnPostText[0].text = frequencies[currentSession.tone.FrequencyIndex] + " Hz\n" + currentSession.tone.dB + " dB";
            }

            //ledLight.SetTrigger("Off");

            currentSession = null;
        }
示例#4
0
        public async Task <MyChatsAndTeams?> GetUpdatedChatsAndTeamsAsync(TeamsDataContext ctx)
        {
            logger.Debug("[{TenantName}] {Method}: Starting to update chats", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync));
            var toBeUpdatedChatsAndTeams = await GetAllChatsAndTeamsAsync(ctx);

            if (toBeUpdatedChatsAndTeams == null)
            {
                logger.Debug("[{TenantName}] {Method}: Initial list of chats is null; leaving", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync));
                // error while retrieving all data? cannot retrieve update either
                return(null);
            }

            if (string.IsNullOrWhiteSpace(toBeUpdatedChatsAndTeams.metadata?.syncToken))
            {
                logger.Debug("[{TenantName}] {Method}: Initial list of chats contains no sync token but we need one to update; leaving", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync));
                // cannot get update if there is no sync token
                return(toBeUpdatedChatsAndTeams);
            }

            var deltaChatsAndTeams = await teamsTenantApiAccessor.GetMyChatsAndTeamsAsync(ctx, toBeUpdatedChatsAndTeams.metadata.syncToken);

            if (deltaChatsAndTeams == null)
            {
                logger.Debug("[{TenantName}] {Method}: Got null as delta result; leaving", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync));
                return(toBeUpdatedChatsAndTeams);
            }
            logger.Debug("[{TenantName}] {Method}: {ChatCount} chats are new or updated with old sync token {SyncToken}", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync), toBeUpdatedChatsAndTeams.chats.Count, toBeUpdatedChatsAndTeams.metadata.syncToken.FromBase64String());

            Experimental.CheckForActiveMeeting(logger, ctx, deltaChatsAndTeams);

            var oldChatsToReplace = toBeUpdatedChatsAndTeams.chats.Where(oldValue => deltaChatsAndTeams.chats.FirstOrDefault(updatedValue => updatedValue?.id == oldValue?.id) != default);

            logger.Debug("[{TenantName}] {Method}: {ChatCount} old chats need an update", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync), oldChatsToReplace.Count());
            foreach (var oldChat in oldChatsToReplace.ToList())
            {
                toBeUpdatedChatsAndTeams.chats.Remove(oldChat);
            }
            toBeUpdatedChatsAndTeams.chats.AddRange(deltaChatsAndTeams.chats);
            teamsTenantApiAccessor.SortChats(toBeUpdatedChatsAndTeams);

            logger.Debug("[{TenantName}] {Method}: Updating sync token to {SyncToken}", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync), deltaChatsAndTeams.metadata.syncToken.FromBase64String());
            toBeUpdatedChatsAndTeams.metadata.syncToken = deltaChatsAndTeams.metadata.syncToken;
            await BlobCache.UserAccount.InsertObject($"ts.{ctx.Tenant.UserId}.chatsAndTeams", toBeUpdatedChatsAndTeams, DateTimeOffset.Now + TimeSpan.FromDays(ChatsAndTeamsCacheLifetimeDays));

            logger.Debug("[{TenantName}] {Method}: Done", ctx.Tenant.TenantName, nameof(GetUpdatedChatsAndTeamsAsync));
            return(toBeUpdatedChatsAndTeams);
        }
示例#5
0
 /// <summary>
 /// Two DnsResourceDataKey are equal iff their authentication prohibited, confidentiality prohibited, experimental, user associated, IPSec, email,
 /// name type, signatory, protocol, algorithm, flags extension and public key fields are equal.
 /// </summary>
 public bool Equals(DnsResourceDataKey other)
 {
     return(other != null &&
            AuthenticationProhibited.Equals(other.AuthenticationProhibited) &&
            ConfidentialityProhibited.Equals(other.ConfidentialityProhibited) &&
            Experimental.Equals(other.Experimental) &&
            UserAssociated.Equals(other.UserAssociated) &&
            IpSec.Equals(other.IpSec) &&
            Email.Equals(other.Email) &&
            NameType.Equals(other.NameType) &&
            Signatory.Equals(other.Signatory) &&
            Protocol.Equals(other.Protocol) &&
            Algorithm.Equals(other.Algorithm) &&
            (FlagsExtension.HasValue
                 ? other.FlagsExtension.HasValue && FlagsExtension.Value.Equals(other.FlagsExtension.Value)
                 : !other.FlagsExtension.HasValue) &&
            PublicKey.Equals(other.PublicKey));
 }
示例#6
0
        internal Page(int number, MediaBox mediaBox, CropBox cropBox, PageContent content)
        {
            if (number <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(number), "Page number cannot be 0 or negative.");
            }

            Number   = number;
            MediaBox = mediaBox;
            CropBox  = cropBox;
            Content  = content;
            Text     = GetText(content);

            Width  = mediaBox.Bounds.Width;
            Height = mediaBox.Bounds.Height;

            Size = mediaBox.Bounds.GetPageSize();
            ExperimentalAccess = new Experimental(this);
        }
        private IEnumerator ExperimentalRoutine()
        {
            int numberOfTones = 0;

            StartTest();
            while (!IsExperimentalComplete())
            {
                currentSession = new Experimental(toneManager.freqIndex, toneManager.currentDB, this, ear);

                pacientButton.onButtonDown.AddListener(currentSession.PacientButtonDown);
                pacientButton.onButtonUp.AddListener(currentSession.PacientButtonUp);
                pacientButton.onButtonDown.AddListener(LedOn);
                pacientButton.onButtonUp.AddListener(LedOff);

                numberOfTones = Random.Range(1, 3);

                for (int i = 0; i < numberOfTones; i++)
                {
                    (currentSession as Experimental).StartTone();
                    if (Random.value >= .5f) // Long
                    {
                        yield return(new WaitForSecondsRealtime(longToneDuration));
                    }
                    else // Short
                    {
                        yield return(new WaitForSecondsRealtime(shortToneDuration));
                    }
                    (currentSession as Experimental).StopTone();

                    yield return(new WaitForSecondsRealtime(deadTimeDuration));
                }

                pacientButton.onButtonDown.RemoveListener(currentSession.PacientButtonDown);
                pacientButton.onButtonUp.RemoveListener(currentSession.PacientButtonUp);
                pacientButton.onButtonDown.RemoveListener(LedOn);
                pacientButton.onButtonUp.RemoveListener(LedOff);

                currentSession.EndSession();
                yield return(new WaitUntil(() => null == currentSession));
            }
            StopTest();
        }
示例#8
0
        internal Page(int number, DictionaryToken dictionary, MediaBox mediaBox, CropBox cropBox, PageContent content,
                      AnnotationProvider annotationProvider)
        {
            if (number <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(number), "Page number cannot be 0 or negative.");
            }

            Dictionary = dictionary ?? throw new ArgumentNullException(nameof(dictionary));

            Number   = number;
            MediaBox = mediaBox;
            CropBox  = cropBox;
            Content  = content;
            Text     = GetText(content);

            Width  = mediaBox.Bounds.Width;
            Height = mediaBox.Bounds.Height;

            Size = mediaBox.Bounds.GetPageSize();
            ExperimentalAccess = new Experimental(this, annotationProvider);
        }
示例#9
0
        public async Task <MyChatsAndTeams?> GetAllChatsAndTeamsAsync(TeamsDataContext ctx)
        {
            var cacheKey    = $"ts.{ctx.Tenant.UserId}.chatsAndTeams";
            var cachedChats = await BlobCache.UserAccount
                              .GetObject <MyChatsAndTeams?>(cacheKey)
                              .Catch(Observable.Return <MyChatsAndTeams?>(null));

            // only return cached values if there are any
            if (cachedChats != null && cachedChats.chats.Count > 0)
            {
                logger.Debug("[{TenantName}] Got list of chats and teams from cache", ctx.Tenant.TenantName);
                return(cachedChats);
            }
            // otherwise: retrieve
            var chatsAndTeams = await teamsTenantApiAccessor.GetMyChatsAndTeamsAsync(ctx);

            if (chatsAndTeams != null)
            {
                await BlobCache.UserAccount.InsertObject(cacheKey, chatsAndTeams, DateTimeOffset.Now + TimeSpan.FromDays(ChatsAndTeamsCacheLifetimeDays));
            }
            Experimental.CheckForActiveMeeting(logger, ctx, chatsAndTeams);
            return(chatsAndTeams);
        }
示例#10
0
        // NEW START
        ////////////////////////////////////////////
        // Pure functions
        //public static bool IsMinerAlgorithmAvaliable(List<Algorithm> algos, MinerBaseType minerBaseType, AlgorithmType algorithmType) {
        //    return algos.FindIndex((a) => a.MinerBaseType == minerBaseType && a.NiceHashID == algorithmType) > -1;
        //}

        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType,
                                        DeviceGroupType devGroupType, bool def = false)
        {
            if (!def & ConfigurableMiners.Contains(minerBaseType))
            {
                // Override with internals
                var path = MinerPathPackages.Find(p => p.DeviceType == devGroupType)
                           .MinerTypes.Find(p => p.Type == minerBaseType)
                           .Algorithms.Find(p => p.Algorithm == algoType);
                if (path != null)
                {
                    if (File.Exists(path.Path))
                    {
                        return(path.Path);
                    }
                    Helpers.ConsolePrint("PATHS", $"Path {path.Path} not found, using defaults");
                }
            }
            // Temp workaround
            if (minerBaseType == MinerBaseType.XmrStak && algoType == AlgorithmType.CryptoNightHeavy)
            {
                return(Data.XmrStakHeavy);
            }

            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(NvidiaGroups.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AmdGroup.SgminerPath(algoType));

            case MinerBaseType.nheqminer:
                return(Data.NhEqMiner);

            case MinerBaseType.ethminer:
                return(Data.Ethminer);

            case MinerBaseType.Claymore:
                return(AmdGroup.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            //case MinerBaseType.excavator:
            //    return Data.Excavator;
            case MinerBaseType.XmrStak:
                return(Data.XmrStak);

            case MinerBaseType.ccminer_alexis:
                return(NvidiaGroups.CcminerUnstablePath(algoType, devGroupType));

            case MinerBaseType.experimental:
                return(Experimental.GetPath(algoType, devGroupType));

            case MinerBaseType.EWBF:
                return(Data.Ewbf);

            case MinerBaseType.Prospector:
                return(Data.Prospector);

            case MinerBaseType.Xmrig:
                return(Data.Xmrig);

            case MinerBaseType.dtsm:
                return(Data.Dtsm);

            case MinerBaseType.cpuminer:
                return(Data.CpuMiner);
            }
            return(Data.None);
        }
示例#11
0
        // NEW START
        ////////////////////////////////////////////
        // Pure functions
        //public static bool IsMinerAlgorithmAvaliable(List<Algorithm> algos, MinerBaseType minerBaseType, AlgorithmType algorithmType) {
        //    return algos.FindIndex((a) => a.MinerBaseType == minerBaseType && a.NiceHashID == algorithmType) > -1;
        //}

        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType,
                                        DeviceGroupType devGroupType, bool def = false)
        {
            if (!def & ConfigurableMiners.Contains(minerBaseType))
            {
                // Override with internals
                var path = MinerPathPackages.Find(p => p.DeviceType == devGroupType)
                           .MinerTypes.Find(p => p.Type == minerBaseType)
                           .Algorithms.Find(p => p.Algorithm == algoType);
                if (path != null)
                {
                    if (File.Exists(path.Path))
                    {
                        return(path.Path);
                    }
                    Helpers.ConsolePrint("PATHS", $"Path {path.Path} not found, using defaults");
                }
            }
            // Temp workaround
            if (minerBaseType == MinerBaseType.XmrStak && algoType == AlgorithmType.CryptoNightHeavy)
            {
                return(Data.XmrStakHeavy);
            }
            if (minerBaseType == MinerBaseType.CryptoDredge && algoType == AlgorithmType.CryptoNightV8)
            {
                // return NvidiaGroups.CryptoDredgeV8(algoType, devGroupType);
                return(Data.CryptoDredge);
            }

            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(NvidiaGroups.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AmdGroup.SgminerPath(algoType));

            case MinerBaseType.nheqminer:
                return(Data.NhEqMiner);

            case MinerBaseType.ethminer:
                return(Data.Ethminer);

            case MinerBaseType.Claymore:
                return(AmdGroup.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            //case MinerBaseType.excavator:
            //    return Data.Excavator;
            case MinerBaseType.XmrStak:
                return(Data.XmrStak);

            case MinerBaseType.ccminer_alexis:
                return(NvidiaGroups.CcminerUnstablePath(algoType, devGroupType));

            case MinerBaseType.experimental:
                return(Experimental.GetPath(algoType, devGroupType));

            case MinerBaseType.EWBF:
                return(Data.Ewbf);

            case MinerBaseType.Prospector:
                return(Data.Prospector);

            case MinerBaseType.Xmrig:
                return(Data.Xmrig);

            case MinerBaseType.XmrigAMD:
                return(Data.XmrigAMD);

            case MinerBaseType.SRBMiner:
                return(Data.SRBMiner);

            case MinerBaseType.dstm:
                return(Data.Dstm);

            case MinerBaseType.cpuminer:
                return(Data.CpuMiner);

            case MinerBaseType.CastXMR:
                return(Data.CastXMR);

            case MinerBaseType.lyclMiner:
                return(Data.lyclMiner);

            case MinerBaseType.hsrneoscrypt:
                return(NvidiaGroups.hsrneoscrypt_path(algoType, devGroupType));

            case MinerBaseType.CryptoDredge:
                return(NvidiaGroups.CryptoDredge(algoType, devGroupType));

            case MinerBaseType.ZEnemy:
                return(NvidiaGroups.ZEnemy(algoType, devGroupType));

            case MinerBaseType.trex:
                return(NvidiaGroups.trex(algoType, devGroupType));

            case MinerBaseType.mkxminer:
                return(Data.mkxminer);

            case MinerBaseType.teamredminer:
                return(Data.teamredminer);

            case MinerBaseType.Phoenix:
                return(Data.Phoenix);

            case MinerBaseType.GMiner:
                return(Data.GMiner);

            case MinerBaseType.lolMiner:
                return(Data.lolMiner);

            case MinerBaseType.WildRig:
                return(Data.WildRig);

            case MinerBaseType.lolMinerBEAM:
                return(Data.lolMinerBEAM);

            case MinerBaseType.Bminer:
                return(Data.Bminer);

            case MinerBaseType.TTMiner:
                return(Data.TTMiner);

            case MinerBaseType.XmrigNVIDIA:
                return(Data.XmrigNVIDIA);

            case MinerBaseType.NBMiner:
                return(Data.NBMiner);

            case MinerBaseType.miniZ:
                return(Data.miniZ);
            }
            return(Data.None);
        }
示例#12
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Experimental obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }