Esempio n. 1
0
        /// <summary>
        /// Helper function to return a property id while making sure it's valid (+ trace)
        /// </summary>
        public static PropertyID GetPropertyID(IHeaderParser parser, Stream headerStream)
        {
            Byte propertyID = headerStream.ReadByteThrow();

            if (propertyID > (Byte)PropertyID.kDummy)
            {
                throw new SevenZipException(parser.GetType().Name + $": Unknown property ID = {propertyID}.");
            }

            Trace.TraceInformation(parser.GetType().Name + $": Property ID = {(PropertyID)propertyID}");
            return((PropertyID)propertyID);
        }
Esempio n. 2
0
 /// <summary>
 /// Helper function to read and ensure a specific PropertyID is next in header stream
 /// </summary>
 public static void ExpectPropertyID(IHeaderParser parser, Stream headerStream, PropertyID propertyID)
 {
     if (GetPropertyID(parser, headerStream) != propertyID)
     {
         throw new SevenZipException(parser.GetType().Name + $": Expected property ID = {propertyID}.");
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Add a header parser.
        /// </summary>
        /// <param name="parser">Parser to use</param>
        /// <param name="name">Header name</param>
        /// <param name="shortName">Compact header name; or <see cref="char.MinValue"/> if not specified.</param>
        public void AddParser(IHeaderParser parser, string name, char shortName)
        {
            if (string.IsNullOrEmpty(name))
                throw new ArgumentException("name may not be null or empty.", "name");

            name = name.ToLower();
            shortName = char.ToLower(shortName);

            lock (_headerParsers)
            {
                if (_headerParsers.ContainsKey(name))
                    _logger.Info("Changing parser '" + name + "' from " +
                                 _headerParsers[name].GetType().FullName + " to " + parser.GetType().FullName);
                _headerParsers[name] = parser;
            }

            lock (_shortNameParsers)
                _shortNameParsers[shortName] = parser;
        }
Esempio n. 4
0
        /// <summary>
        /// Add a header parser.
        /// </summary>
        /// <param name="parser">Parser to use</param>
        /// <param name="name">Header name</param>
        /// <param name="shortName">Compact header name; or <see cref="char.MinValue"/> if not specified.</param>
        public void AddParser(IHeaderParser parser, string name, char shortName)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException("name may not be null or empty.", "name");
            }

            name      = name.ToLower();
            shortName = char.ToLower(shortName);

            lock (_headerParsers)
            {
                if (_headerParsers.ContainsKey(name))
                {
                    _logger.Info("Changing parser '" + name + "' from " +
                                 _headerParsers[name].GetType().FullName + " to " + parser.GetType().FullName);
                }
                _headerParsers[name] = parser;
            }

            lock (_shortNameParsers)
                _shortNameParsers[shortName] = parser;
        }