Ejemplo n.º 1
0
        // Token: 0x0600112F RID: 4399 RVA: 0x00063E70 File Offset: 0x00062070
        private GrammarGeneratorTaskContext InitializeTask(RecipientType recipientType, DirectoryProcessorBaseTaskContext context)
        {
            base.Logger.TraceDebug(this, "Entering GrammarGenerator.InitializeTask recipientType='{0}'", new object[]
            {
                recipientType
            });
            UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_GrammarGenerationStarted, null, new object[]
            {
                base.TenantId,
                base.RunId,
                recipientType.ToString()
            });
            GrammarFileDistributionShare.CreateDirectoryProcessorFolder();
            IGrammarGeneratorInterface grammarGeneratorInstance = null;

            if (recipientType != RecipientType.User)
            {
                if (recipientType != RecipientType.Group)
                {
                    ExAssert.RetailAssert(false, "Unsupported recipient type");
                }
                else
                {
                    grammarGeneratorInstance = new DLGrammarGenerator(base.Logger);
                }
            }
            else
            {
                grammarGeneratorInstance = new UserGrammarGenerator(base.Logger, base.OrgId);
            }
            CultureInfo[] grammarCultures = UMGrammarTenantCache.Instance.GetGrammarCultures();
            return(new GrammarGeneratorTaskContext(context.MailboxData, context.Job, context.TaskQueue, context.Step, context.TaskStatus, grammarGeneratorInstance, grammarCultures, base.Logger, context.RunData, context.DeferredFinalizeTasks));
        }
Ejemplo n.º 2
0
        // Token: 0x06001138 RID: 4408 RVA: 0x00064A00 File Offset: 0x00062C00
        private void WriteGrammarGenerationManifest(List <GrammarFileMetadata> grammarFiles)
        {
            GrammarGenerationMetadata metadata = new GrammarGenerationMetadata(1, base.TenantId, base.RunId, Utils.GetLocalHostFqdn(), "15.00.1497.010", base.RunStartTime, grammarFiles);
            string grammarManifestPath         = GrammarFileDistributionShare.GetGrammarManifestPath(base.OrgId, base.MailboxGuid);

            GrammarGenerationMetadata.Serialize(metadata, grammarManifestPath);
        }
Ejemplo n.º 3
0
        // Token: 0x0600105D RID: 4189 RVA: 0x0005F918 File Offset: 0x0005DB18
        private void LogCompletion(DtmfMapGeneratorTaskContext taskContext, RecipientType recipientType)
        {
            base.Logger.TraceDebug(null, "Entering DtmfMapGenerator.LogCompletion recipientType='{0}'", new object[]
            {
                recipientType
            });
            UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_DtmfMapGenerationSuccessful, null, new object[]
            {
                base.RunData.TenantId,
                base.RunData.RunId,
                recipientType
            });
            DateTime runStartTime              = base.RunStartTime;
            DateTime lastFullUpdateTimeUtc     = taskContext.IsFullUpdate ? base.RunStartTime : taskContext.Metadata.LastFullUpdateTimeUtc;
            DtmfMapGenerationMetadata metadata = new DtmfMapGenerationMetadata(1, base.TenantId, base.RunId, Utils.GetLocalHostFqdn(), "15.00.1497.010", runStartTime, lastFullUpdateTimeUtc);
            string metadataFileName            = this.GetMetadataFileName(recipientType);
            string dtmfMapFolderPath           = GrammarFileDistributionShare.GetDtmfMapFolderPath(base.RunData.OrgId, base.RunData.MailboxGuid);

            base.Logger.TraceDebug(this, "LogCompletion folderPath='{0}', fileName='{1}'", new object[]
            {
                dtmfMapFolderPath,
                metadataFileName
            });
            string text = DtmfMapGenerationMetadata.Serialize(metadata, metadataFileName, dtmfMapFolderPath);

            if (text != null)
            {
                this.UploadMetadata(text, metadataFileName);
            }
        }
Ejemplo n.º 4
0
        // Token: 0x060010EA RID: 4330 RVA: 0x00062FEC File Offset: 0x000611EC
        public void CreateRunFolder()
        {
            string grammarGenerationRunFolderPath = GrammarFileDistributionShare.GetGrammarGenerationRunFolderPath(this.OrgId, this.MailboxGuid, this.RunId);

            if (!Directory.Exists(grammarGenerationRunFolderPath))
            {
                Directory.CreateDirectory(grammarGenerationRunFolderPath);
            }
            this.RunFolderPath = grammarGenerationRunFolderPath;
        }
Ejemplo n.º 5
0
 // Token: 0x06001137 RID: 4407 RVA: 0x000649C0 File Offset: 0x00062BC0
 internal static void CleanUpOldGrammarRuns(RunData runData, Trace Tracer)
 {
     Utils.TryDiskOperation(delegate
     {
         Guid runId = Guid.Empty;
         try
         {
             string grammarManifestPath = GrammarFileDistributionShare.GetGrammarManifestPath(runData.OrgId, runData.MailboxGuid);
             GrammarGenerationMetadata grammarGenerationMetadata = GrammarGenerationMetadata.Deserialize(grammarManifestPath);
             runId = grammarGenerationMetadata.RunId;
         }
         catch (Exception obj)
         {
             UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_ReadLastSuccessRunIDFailed, null, new object[]
             {
                 runData.TenantId,
                 runData.RunId,
                 CommonUtil.ToEventLogString(obj)
             });
         }
         string grammarGenerationRunFolderPath = GrammarFileDistributionShare.GetGrammarGenerationRunFolderPath(runData.OrgId, runData.MailboxGuid, runId);
         string grammarFolderPath = GrammarFileDistributionShare.GetGrammarFolderPath(runData.OrgId, runData.MailboxGuid);
         string[] directories     = Directory.GetDirectories(grammarFolderPath);
         foreach (string text in directories)
         {
             string fileName = Path.GetFileName(text);
             Guid b;
             if (Guid.TryParse(fileName, out b) && runData.RunId != b && string.Compare(text, grammarGenerationRunFolderPath, StringComparison.OrdinalIgnoreCase) != 0)
             {
                 Utilities.DebugTrace(Tracer, "Deleting run directory '{0}'", new object[]
                 {
                     text
                 });
                 Directory.Delete(text, true);
             }
         }
     }, delegate(Exception exception)
     {
         UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_GrammarGenerationCleanupFailed, null, new object[]
         {
             runData.TenantId,
             runData.RunId,
             CommonUtil.ToEventLogString(exception)
         });
     });
 }
Ejemplo n.º 6
0
        // Token: 0x06001063 RID: 4195 RVA: 0x0005FBD8 File Offset: 0x0005DDD8
        private string GetMetadataFilePath(RecipientType recipientType)
        {
            bool     flag              = false;
            DateTime dateTime          = DateTime.MinValue;
            string   metadataFileName  = this.GetMetadataFileName(recipientType);
            string   dtmfMapFolderPath = GrammarFileDistributionShare.GetDtmfMapFolderPath(base.RunData.OrgId, base.RunData.MailboxGuid);
            string   text              = Path.Combine(dtmfMapFolderPath, metadataFileName);

            if (File.Exists(text))
            {
                flag     = true;
                dateTime = File.GetLastWriteTimeUtc(text);
                base.Logger.TraceDebug(this, "GetMetadataFilePath filePath='{0}' exists, lastModifiedTimeUtc='{1}'", new object[]
                {
                    text,
                    dateTime
                });
            }
            if (DateTime.UtcNow - dateTime > this.MetadataExpiration)
            {
                base.Logger.TraceDebug(this, "Downloading metadata to filePath='{0}'", new object[]
                {
                    text
                });
                DtmfMapMetadataMailboxFileStore dtmfMapMetadataMailboxFileStore = DtmfMapMetadataMailboxFileStore.FromMailboxGuid(base.OrgId, base.MailboxGuid);
                if (dtmfMapMetadataMailboxFileStore != null && dtmfMapMetadataMailboxFileStore.DownloadMetadata(text, metadataFileName, 1.ToString(), dateTime))
                {
                    flag = true;
                }
            }
            if (!flag)
            {
                return(null);
            }
            return(text);
        }
Ejemplo n.º 7
0
        // Token: 0x06001130 RID: 4400 RVA: 0x00063F64 File Offset: 0x00062164
        private List <string> GenerateGrammar(CultureInfo c, IGrammarGeneratorInterface generatorInstance)
        {
            base.Logger.TraceDebug(this, "Entering GrammarGenerator.GenerateGrammar culture='{0}'", new object[]
            {
                c
            });
            string        runFolderPath     = base.RunData.RunFolderPath;
            string        adentriesFileName = generatorInstance.ADEntriesFileName;
            List <string> list = null;

            try
            {
                string entriesFilePath = ADCrawler.GetEntriesFilePath(runFolderPath, adentriesFileName);
                List <DirectoryGrammar> grammarList = generatorInstance.GetGrammarList();
                list = new List <string>(grammarList.Count);
                UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_GrammarGenerationWritingGrammarEntriesStarted, null, new object[]
                {
                    adentriesFileName,
                    c.Name,
                    base.TenantId,
                    base.RunId
                });
                string grammarFileFolderPath = GrammarFileDistributionShare.GetGrammarFileFolderPath(base.OrgId, base.MailboxGuid, base.RunId, c);
                Directory.CreateDirectory(grammarFileFolderPath);
                string recognizerId = SpeechRecognizerInfo.GetRecognizerId(c);
                if (recognizerId != null)
                {
                    string grammarFolderPath = GrammarFileDistributionShare.GetGrammarFolderPath(base.OrgId, base.MailboxGuid);
                    INormalizationCacheFileStore cacheFileStore = NormalizationCacheMailboxFileStore.FromMailboxGuid(base.OrgId, base.MailboxGuid);
                    using (SpeechRecognitionEngine speechRecognitionEngine = new SpeechRecognitionEngine(recognizerId))
                    {
                        using (XmlReader xmlReader = XmlReader.Create(entriesFilePath))
                        {
                            using (GrammarGenerationLog grammarGenerationLog = new GrammarGenerationLog(grammarFileFolderPath, base.Logger))
                            {
                                NameNormalizer nameNormalizer = new NameNormalizer(c, speechRecognitionEngine, adentriesFileName, grammarFolderPath, base.Logger, cacheFileStore);
                                this.InitializeGrammars(grammarFileFolderPath, c, grammarList);
                                if (xmlReader.ReadToFollowing("ADEntry"))
                                {
                                    for (;;)
                                    {
                                        ADEntry adentry = this.LoadADEntry(xmlReader, nameNormalizer, grammarGenerationLog);
                                        if (adentry != null && !this.WriteADEntryToGrammars(adentry, grammarList))
                                        {
                                            break;
                                        }
                                        base.RunData.ThrowIfShuttingDown();
                                        if (!xmlReader.ReadToFollowing("ADEntry"))
                                        {
                                            goto IL_18A;
                                        }
                                    }
                                    base.Logger.TraceError(this, "GrammarGenerator.Run - Cannot accept more entries in any of the grammar files", new object[0]);
                                }
IL_18A:
                                list.AddRange(this.CompleteGrammars(grammarList));
                                this.UploadResults(list, nameNormalizer, c);
                            }
                        }
                        goto IL_204;
                    }
                }
                UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_GrammarGenerationMissingCulture, null, new object[]
                {
                    base.TenantId,
                    c.Name,
                    Utils.GetLocalHostFqdn()
                });
IL_204:
                UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_GrammarGenerationWritingGrammarEntriesCompleted, null, new object[]
                {
                    adentriesFileName,
                    c.Name,
                    base.TenantId,
                    base.RunId
                });
            }
            catch (Exception ex)
            {
                base.Logger.TraceError(this, "GrammarGenerator.Run - Exception='{0}'", new object[]
                {
                    ex
                });
                this.exception = ex;
                throw;
            }
            return(list);
        }