private static bool UnregisterEventHandlers(AudioEngine_srv i_amSrv) { bool bRet = true; ISMessaging.Delivery.ISMDistributer.ISMDistributerEventHandler deh = new ISMessaging.Delivery.ISMDistributer.ISMDistributerEventHandler(i_amSrv.NewMsg); AMEvHook.MsgDistr.ISMMsg -= deh; return(bRet); }
static void Main(string[] args) { bool bRes = true; string sPrompt = "> ", sCmd = "", sLogPath = ""; AudioEngine_srv amSrv = null; ILegacyLogger logger = null; string sDisableKeyboard = "", sVer = ""; AssemblyName asmName = null; //Name the main thread Thread.CurrentThread.Name = "AudioMgrMainT"; // Set up the logger(s) sLogPath = ConfigurationManager.AppSettings[cs_LogFilePath]; if (!(sLogPath.EndsWith("/") || sLogPath.EndsWith("\\"))) { sLogPath = sLogPath + "/"; } logger = new LegacyLogger(); logger.Init("", "", Thread.CurrentThread.Name, "", "", sLogPath); bRes = logger.Open(); if (!bRes) { Console.Error.WriteLine("AudioMgr failed to open the logger!"); } else { asmName = Assembly.GetAssembly(typeof(AudioMgr.AudioEngine)).GetName(); sVer = asmName.Version.ToString(); logger.Log(Level.Info, "AudioMgr v" + sVer); bRes = RemotingConfig(logger); amSrv = new AudioEngine_srv(logger); bRes = RegisterEventHandlers(amSrv); if (!bRes) { logger.Log(Level.Exception, " AudioMgr failed registering event handlers!"); } else { bRes = amSrv.LoadASR(logger); if (!bRes) { logger.Log(Level.Exception, " AudioMgr failed to load ASR(s)!"); } else { bRes = amSrv.CreateWorkerThreads(sLogPath); if (!bRes) { logger.Log(Level.Exception, " AudioMgr failed to create worker threads!"); } else { //Console.WriteLine("AudioMgr startup successful."); logger.Log(Level.Info, "AudioMgr startup successful."); sDisableKeyboard = ConfigurationManager.AppSettings[cs_DisableKeyboard]; sDisableKeyboard = (sDisableKeyboard == null) ? "" : sDisableKeyboard; if (sDisableKeyboard == "false") { Console.Write(sPrompt); sCmd = Console.ReadLine(); while (bRes) { bRes = amSrv.ProcessCmdString(sCmd); if (bRes) { Console.Write(sPrompt); sCmd = Console.ReadLine(); } } } // Join worker threads before exiting amSrv.JoinWorkerThreads(); UnregisterEventHandlers(amSrv); } } } logger.Log(Level.Info, "AudioMgr shutdown."); logger.Close(); } }