Пример #1
0
        public static void Initialize()
        {
            if (s_initialized)
                throw new InvalidOperationException("NetworkLogFactory is already initialized.");

            s_initialized = true;

            var ctorTypes = new[] { typeof(NetworkLogMode) };
            var networkLogType = typeof(NetworkLog);
            var networkLogAttrType = typeof(NetworkLogAttribute);

            foreach (var type in TypeManager.Types)
            {
                if (!type.IsAbstract && type.IsSubclassOf(networkLogType))
                {
                    if (type.GetConstructor(ctorTypes) == null)
                        Console.WriteLine("Error: Failed to find .ctor(NetworkLogMode) for class " + type);

                    var attributes = (NetworkLogAttribute[])type.GetCustomAttributes(networkLogAttrType, false);
                    if (attributes.Length != 0)
                    {
                        var wrapper = new NetworkLogWrapper(attributes[0], type);

                        if (s_maxHeaderLength < wrapper.ReqHeaderLength)
                            s_maxHeaderLength = wrapper.ReqHeaderLength;

                        s_logs.Add(wrapper);
                    }
                }
            }

            Console.WriteLine("Loaded {0} network logs", s_logs.Count);

            s_logs.Sort((x, y) => string.Compare(x.Name, y.Name));
            Wrappers = s_logs.ToArray();

            // AllFileFiltersReadOnly
            {
                int count = 0;
                var filters = new StringBuilder();
                for (int i = 0; i < s_logs.Count; )
                {
                    if (!s_logs[i].IsReadOnly)
                        filters.Append(s_logs[i].FileFilter);

                    if (++i != s_logs.Count)
                        filters.Append('|');

                    ++count;
                }

                AllFileFiltersReadOnly = filters.ToString();
                AllFileFiltersReadOnlyCount = count;
            }

            // AllFileFiltersWithAny
            {
                int count = 0;
                var filters = new StringBuilder();
                for (int i = 0; i < s_logs.Count; ++i)
                {
                    filters.Append(s_logs[i].FileFilter);
                    filters.Append('|');

                    ++count;
                }
                filters.Append(NetworkStrings.AllFiles + " (*.*)|*.*");
                ++count;

                AllFileFiltersWithAny = filters.ToString();
                AllFileFiltersWithAnyCount = count;
            }
        }
Пример #2
0
        public static void Initialize()
        {
            if (s_initialized)
            {
                throw new InvalidOperationException("NetworkLogFactory is already initialized.");
            }

            s_initialized = true;

            var ctorTypes          = new[] { typeof(NetworkLogMode) };
            var networkLogType     = typeof(NetworkLog);
            var networkLogAttrType = typeof(NetworkLogAttribute);

            foreach (var type in TypeManager.Types)
            {
                if (!type.IsAbstract && type.IsSubclassOf(networkLogType))
                {
                    if (type.GetConstructor(ctorTypes) == null)
                    {
                        Console.WriteLine("Error: Failed to find .ctor(NetworkLogMode) for class " + type);
                    }

                    var attributes = (NetworkLogAttribute[])type.GetCustomAttributes(networkLogAttrType, false);
                    if (attributes.Length != 0)
                    {
                        var wrapper = new NetworkLogWrapper(attributes[0], type);

                        if (s_maxHeaderLength < wrapper.ReqHeaderLength)
                        {
                            s_maxHeaderLength = wrapper.ReqHeaderLength;
                        }

                        s_logs.Add(wrapper);
                    }
                }
            }

            Console.WriteLine("Loaded {0} network logs", s_logs.Count);

            s_logs.Sort((x, y) => string.Compare(x.Name, y.Name));
            Wrappers = s_logs.ToArray();

            // AllFileFiltersReadOnly
            {
                int count   = 0;
                var filters = new StringBuilder();
                for (int i = 0; i < s_logs.Count;)
                {
                    if (!s_logs[i].IsReadOnly)
                    {
                        filters.Append(s_logs[i].FileFilter);
                    }

                    if (++i != s_logs.Count)
                    {
                        filters.Append('|');
                    }

                    ++count;
                }

                AllFileFiltersReadOnly      = filters.ToString();
                AllFileFiltersReadOnlyCount = count;
            }

            // AllFileFiltersWithAny
            {
                int count   = 0;
                var filters = new StringBuilder();
                for (int i = 0; i < s_logs.Count; ++i)
                {
                    filters.Append(s_logs[i].FileFilter);
                    filters.Append('|');

                    ++count;
                }
                filters.Append(NetworkStrings.AllFiles + " (*.*)|*.*");
                ++count;

                AllFileFiltersWithAny      = filters.ToString();
                AllFileFiltersWithAnyCount = count;
            }
        }