Beispiel #1
0
        public void RemoveForeman(string ForemanId)
        {
            // prevent removal if foreman is connected to another foreman

            if (foremen == null)
            {
                return;
            }

            try
            {
                // unload if ForemanLoader
                IForeman foreman;
                if (foremen.TryRemove(ForemanId, out foreman))
                {
                    ForemanLoader.Unload((ForemanLoader)foreman);
                }

                foreman = null;
            }
            catch
            {
            }

            //GC.Collect();
        }
Beispiel #2
0
        private void AddForeman(string ForemanId, string ConfigString, ForemanConfigurationFile Config)
        {
            IForeman foreman;

            if (foremen.TryGetValue(ForemanId, out foreman))
            {
                throw new Exception("ForemanId already added");
            }

            if (ForemanId == null)
            {
                throw new ArgumentNullException("ForemanId");
            }

            if (ForemanId.Length < 3 || ForemanId.Length > 15)
            {
                throw new ArgumentException("ForemanId must be 3-15 characters in length");
            }

            if (!RegexAlphaNumeric.IsMatch(ForemanId))
            {
                throw new ArgumentException("ForemanId must contain only alpha-numeric characters");
            }

            if (IsDisposed)
            {
                throw new ObjectDisposedException("Contractor");
            }

            if (ForemanId == null || ForemanId.Length == 0)
            {
                throw new ArgumentException("ForemanId");
            }

            if (Config == null)
            {
                if (ConfigString == null || ConfigString.Length == 0)
                {
                    throw new ArgumentException("ConfigString");
                }
            }

            if (foremen.ContainsKey(ForemanId))
            {
                throw new Exception(ForemanId + " was already added");
            }

            foreman = ForemanLoader.CreateInstance(ForemanId, ConfigString, Config, Settings);

            foremen.AddOrUpdate(ForemanId, foreman, (k, v) => foreman);
        }