/// Initialize an instance of BSlaveServiceManager
        /// <param name="projectName">This name is used when searching a project's configuration file. Must be same as the name of the configuration file.</param>
        private BSlaveServiceManager(string projectName)
        {
            try
              {
            observers = new ArrayList();

            // intialize configuration of this module (module should read this configuration)
            moduleConfiguration = BConfigManager.GetInstance().LoadModuleConfig(
              System.IO.Path.Combine(BConfigManager.GlobalModulesPath, projectName + ".conf"));
            moduleConfiguration.ImportConfig(
              System.IO.Path.Combine(BConfigManager.LocalModulesPath, projectName + ".conf"));

            // don't know far end's PID so send 0 to search for
            busManager = BBusManagerFactory.CreateBusManager(null);
              }
              catch (Exception e)
              { // log all top level errors
            LibBeline.GetInstance().LogManager.Log(e);
            throw;
              }
        }
        /// <summary>Load new module's configuration from global and then from local config file</summary>
        public BConfigItem LoadModuleConfig(string aFileName)
        {
            if (moduleConf.Count == capacity) throw new Exception("Maximum count of configuration items reached.");

              BConfigItem retval = new BConfigItem(Path.Combine(BConfigManager.GlobalModulesPath,aFileName));
              retval.ImportConfig(Path.Combine(BConfigManager.LocalModulesPath, aFileName));
              moduleConf.Add(retval.OID, retval);

              return retval;
        }