コード例 #1
0
 internal ListenerInfo(String name, String details, SafeNameValueCollection objParams, IReflectInsightListener listener)
 {
     Id       = RIUtils.GetStringHash(name);
     Name     = name;
     Details  = details;
     Params   = objParams;
     Listener = listener;
     Disposed = false;
 }
コード例 #2
0
        static public ListenerInfo CreateListenerInfo(String listenerName, SafeNameValueCollection objParams)
        {
            if (listenerName == null)
            {
                throw new ArgumentNullException("listenerName");
            }

            listenerName = listenerName.Trim();

            // Ensure that Listener Name has no spaces. If so, raise exception
            if (listenerName.IndexOf(' ') > 0 || listenerName.Length == 0)
            {
                throw new ReflectInsightException(String.Format("'{0}' is not a proper listener name.", listenerName));
            }

            ListenerInfo            listener  = null;
            IReflectInsightListener iListener = ListenerLoader.Get(listenerName);

            try
            {
                if (objParams == null)
                {
                    objParams = new SafeNameValueCollection();
                }

                listener = new ListenerInfo(listenerName, ReconstructDetailString(listenerName, objParams), objParams, iListener);
            }
            catch (Exception ex)
            {
                iListener.DisposeObject();
                throw new ReflectInsightException(String.Format("Listener '{0}' caused an exception during the ReconstructDetailString section for method CreateListenerInfo() .", listenerName), ex);
            }

            // update % parameters if any
            try
            {
                iListener.UpdateParameterVariables(listener);
            }
            catch (Exception ex)
            {
                listener.DisposeObject();
                throw new ReflectInsightException(String.Format("Listener '{0}' caused an exception during the UpdateParameterVariables() method.", listenerName), ex);
            }

            return(listener);
        }
コード例 #3
0
        private static String ReconstructDetailString(String objName, SafeNameValueCollection objParams)
        {
            StringBuilder rValue = new StringBuilder(objName.Trim());

            if (objParams.Count > 0)
            {
                rValue.Append("[ ");

                foreach (String key in objParams.AllKeys)
                {
                    rValue.AppendFormat("{0}={1}; ", key, objParams[key]);
                }

                rValue.Replace("; ", " ", rValue.Length - 2, 2);
                rValue.Append("]");
            }

            return(rValue.ToString().Trim());
        }
コード例 #4
0
        static private SafeNameValueCollection GetParameters(String details)
        {
            SafeNameValueCollection parameters = new SafeNameValueCollection();

            String listenerName = EnsureNoSpacesForListenerName(details);

            Int32 length = details.Length;

            details = details.Replace(String.Format("{0}[", listenerName), String.Empty).Replace("]", String.Empty).Trim();
            if (details.Length == length)
            {
                details = details.Replace(listenerName, String.Empty);
            }

            if (String.Compare(details, String.Empty, false) != 0)
            {
                String[] keyValuePairs = details.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (String pair in keyValuePairs)
                {
                    String[] keyValues = pair.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                    if (keyValues.Length != 2)
                    {
                        throw new ReflectInsightException("Listener parameters must follow the Key Value Pair model (i.e. param1=value1");
                    }

                    if (keyValues[0].Trim().Contains(" "))
                    {
                        throw new ReflectInsightException("Parameter names cannot contain spaces");
                    }

                    parameters[keyValues[0].Trim()] = UnmaskSpecialSymbols(keyValues[1].Trim());
                }
            }

            return(parameters);
        }