Ejemplo n.º 1
0
        /// <summary>
        /// Recupera as versões das entradas carregadas no cache.
        /// </summary>
        /// <returns></returns>
        public IEnumerable <DataEntryVersion> GetEntryVersions()
        {
            var directory = GetLocalPath();

            if (System.IO.Directory.Exists(directory))
            {
                foreach (var i in System.IO.Directory.GetFiles(directory, "*.cache"))
                {
                    DataEntryVersion version = null;
                    try
                    {
                        using (var stream = System.IO.File.OpenRead(i))
                        {
                            var reader = new Colosoft.Serialization.IO.CompactBinaryReader(stream, Colosoft.Text.Encoding.Default);
                            version = new DataEntryVersion();
                            ((Colosoft.Serialization.ICompactSerializable)version).Deserialize(reader);
                        }
                    }
                    catch
                    {
                        continue;
                    }
                    yield return(version);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Insere uma nova entrada no respositório
        /// </summary>
        /// <param name="version">Versão da entrada.</param>
        /// <param name="stream">Stream com os dados.</param>
        /// <returns></returns>
        public bool Insert(DataEntryVersion version, System.IO.Stream stream)
        {
            version.Require("version").NotNull();
            stream.Require("stream").NotNull();
            var directory = GetLocalPath();

            try
            {
                if (!System.IO.Directory.Exists(directory))
                {
                    System.IO.Directory.CreateDirectory(directory);
                }
                using (var outStream = System.IO.File.OpenWrite(MakeEntryFileName(version.TypeName)))
                {
                    var buffer = new byte[1024];
                    for (var read = 0; (read = stream.Read(buffer, 0, buffer.Length)) > 0;)
                    {
                        outStream.Write(buffer, 0, read);
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                if (!IsFileLocked(ex))
                {
                    System.Diagnostics.Debug.Fail(ex.Message);
                }
                return(false);
            }
        }
        /// <summary>
        /// Adiciona a versão para realizar o download.
        /// </summary>
        /// <param name="version"></param>
        public void Add(DataEntryVersion version)
        {
            version.Require("version").NotNull();
            CheckIsBusy();

            lock (_versions)
                _versions.Enqueue(version);
        }