/// <summary> Reconstitute this queue instance from a stream (that is,
        /// deserialize it).
        /// </summary>
        /// <param name="info">The <see cref="System.Runtime.Serialization.SerializationInfo"/> to populate with data. </param>
        /// <param name="context">The destination (see <see cref="System.Runtime.Serialization.StreamingContext"/>) for this serialization. </param>
        protected LinkedBlockingQueue(SerializationInfo info, StreamingContext context)
        {
            SerializationUtilities.DefaultReadObject(info, context, this);
            _last = _head = new Node(default(T));

            T[] items = (T[])info.GetValue("Data", typeof(T[]));
            foreach (var item in items)
            {
                Insert(item);
            }
            _activeCount = items.Length;
        }
예제 #2
0
        /// <summary> Reconstitute the list from a stream (i.e., deserialize it).</summary>
        /// <param name="s">the stream</param>
        /// <param name="context">the context</param>
        protected CopyOnWriteArrayList(SerializationInfo s, StreamingContext context) {
            // Read in size, and any hidden stuff
            SerializationUtilities.DefaultReadObject(s, context, this);

            // Read in array length and allocate array
            int len = s.GetInt32("Spring.Threading.Collections.CopyOnWriteArrayListdataLength");
            T[] elements = new T[len];

            // Read in all elements in the proper order.
            for(int i = 0; i < len; i++) {
                elements[i] = (T)s.GetValue("Spring.Threading.Collections.CopyOnWriteArrayListdata" + i, typeof(T));
            }
            Array = elements;
        }
        /// <summary>
        /// Reconstitute the <see cref="PriorityQueue{T}"/> instance from a stream (that is,
        /// deserialize it).
        /// </summary>
        /// <param name="serializationInfo">the stream</param>
        /// <param name="context">the context</param>
        protected PriorityQueue(SerializationInfo serializationInfo, StreamingContext context)
        {
            SerializationUtilities.DefaultReadObject(serializationInfo, context, this);

            int arrayLength = serializationInfo.GetInt32("Length");

            _queue = new T[arrayLength];

            var array = (T[])serializationInfo.GetValue("Data", typeof(T[]));

            Array.Copy(array, 0, _queue, 0, array.Length);
            _size = array.Length;

            var comparer = (IComparer <T>)serializationInfo.GetValue("Comparer", typeof(IComparer <T>));

            _comparer = comparer ?? _defaultComparer;
        }