Esempio n. 1
0
        private void AddEntry(FilelistEntryType type, long filesetid, string path, DateTime time, long blocksetid, string metahash, long metahashsize, System.Data.IDbTransaction transaction)
        {
            var fileid     = -1L;
            var metadataid = AddMetadataset(metahash, metahashsize, transaction);

            if (m_filesetLookup != null)
            {
                PathEntryKeeper e;
                if (m_filesetLookup.TryFind(path, out e))
                {
                    fileid = e.GetFilesetID(blocksetid, metadataid);
                }
            }
            else
            {
                m_findFilesetCommand.Transaction = transaction;
                m_findFilesetCommand.SetParameterValue(0, path);
                m_findFilesetCommand.SetParameterValue(1, blocksetid);
                m_findFilesetCommand.SetParameterValue(2, metadataid);
                var r = m_findFilesetCommand.ExecuteScalar();
                if (r != null && r != DBNull.Value)
                {
                    fileid = Convert.ToInt64(r);
                }
            }

            if (fileid < 0)
            {
                m_insertFileCommand.Transaction = transaction;
                m_insertFileCommand.SetParameterValue(0, path);
                m_insertFileCommand.SetParameterValue(1, blocksetid);
                m_insertFileCommand.SetParameterValue(2, metadataid);
                fileid = Convert.ToInt64(m_insertFileCommand.ExecuteScalar());
                if (m_filesetLookup != null)
                {
                    PathEntryKeeper e;
                    if (m_filesetLookup.TryFind(path, out e))
                    {
                        e.AddFilesetID(blocksetid, metadataid, fileid);
                    }
                    else
                    {
                        e = new PathEntryKeeper();
                        e.AddFilesetID(blocksetid, metadataid, fileid);
                        m_filesetLookup.Insert(path, e);
                    }
                }
            }

            m_insertFilesetEntryCommand.Transaction = transaction;
            m_insertFilesetEntryCommand.SetParameterValue(0, filesetid);
            m_insertFilesetEntryCommand.SetParameterValue(1, fileid);
            m_insertFilesetEntryCommand.SetParameterValue(2, NormalizeDateTimeToEpochSeconds(time));
            m_insertFilesetEntryCommand.ExecuteNonQuery();
        }
Esempio n. 2
0
        private void AddEntry(FilelistEntryType type, long filesetid, string path, DateTime time, long blocksetid, string metahash, long metahashsize, System.Data.IDbTransaction transaction)
        {
            var fileid     = -1L;
            var metadataid = AddMetadataset(metahash, metahashsize, transaction);

            if (m_filesetLookup != null)
            {
                PathEntryKeeper e;
                if (m_filesetLookup.TryFind(path, out e))
                {
                    fileid = e.GetFilesetID(blocksetid, metadataid);
                }
            }
            else
            {
                m_findFilesetCommand.Transaction = transaction;
                m_findFilesetCommand.SetParameterValue(0, path);
                m_findFilesetCommand.SetParameterValue(1, blocksetid);
                m_findFilesetCommand.SetParameterValue(2, metadataid);
                fileid = m_findFilesetCommand.ExecuteScalarInt64(-1);
            }

            if (fileid < 0)
            {
                m_insertFileCommand.Transaction = transaction;
                m_insertFileCommand.SetParameterValue(0, path);
                m_insertFileCommand.SetParameterValue(1, blocksetid);
                m_insertFileCommand.SetParameterValue(2, metadataid);
                fileid = m_insertFileCommand.ExecuteScalarInt64(-1);
                if (m_filesetLookup != null)
                {
                    PathEntryKeeper e;
                    if (m_filesetLookup.TryFind(path, out e))
                    {
                        e.AddFilesetID(blocksetid, metadataid, fileid);
                    }
                    else
                    {
                        e = new PathEntryKeeper();
                        e.AddFilesetID(blocksetid, metadataid, fileid);
                        m_filesetLookup.Insert(path, e);
                    }
                }
            }

            m_insertFilesetEntryCommand.Transaction = transaction;
            m_insertFilesetEntryCommand.SetParameterValue(0, filesetid);
            m_insertFilesetEntryCommand.SetParameterValue(1, fileid);
            m_insertFilesetEntryCommand.SetParameterValue(2, time.ToUniversalTime().Ticks);
            m_insertFilesetEntryCommand.ExecuteNonQuery();
        }
Esempio n. 3
0
        public void AddMetaEntry(FilelistEntryType type, string name, string metahash, long metasize, string metablockhash, IEnumerable <string> metablocklisthashes)
        {
            m_foldercount++;
            m_writer.WriteStartObject();
            m_writer.WritePropertyName("type");
            m_writer.WriteValue(type.ToString());
            m_writer.WritePropertyName("path");
            m_writer.WriteValue(name);
            if (metahash != null)
            {
                WriteMetaProperties(metahash, metasize, metablockhash, metablocklisthashes);
            }

            m_writer.WriteEndObject();
        }
Esempio n. 4
0
        private void AddFileEntry(FilelistEntryType type, string name, string filehash, long size, DateTime lastmodified, string metahash, long metasize, string metablockhash, string blockhash, long blocksize, IEnumerable <string> blocklisthashes, IEnumerable <string> metablocklisthashes)
        {
            m_filecount++;
            m_writer.WriteStartObject();
            m_writer.WritePropertyName("type");
            m_writer.WriteValue(type.ToString());
            m_writer.WritePropertyName("path");
            m_writer.WriteValue(name);
            m_writer.WritePropertyName("hash");
            m_writer.WriteValue(filehash);
            m_writer.WritePropertyName("size");
            m_writer.WriteValue(size);
            m_writer.WritePropertyName("time");
            m_writer.WriteValue(Library.Utility.Utility.SerializeDateTime(lastmodified));
            if (metahash != null)
            {
                WriteMetaProperties(metahash, metasize, metablockhash, metablocklisthashes);
            }

            if (blocklisthashes != null)
            {
                //Slightly akward, but we avoid writing if there are no entries
                using (var en = blocklisthashes.GetEnumerator())
                {
                    if (en.MoveNext() && !string.IsNullOrEmpty(en.Current))
                    {
                        m_writer.WritePropertyName("blocklists");
                        m_writer.WriteStartArray();
                        m_writer.WriteValue(en.Current);
                        while (en.MoveNext())
                        {
                            m_writer.WriteValue(en.Current);
                        }
                        m_writer.WriteEndArray();
                    }
                }
            }
            else if (!string.IsNullOrWhiteSpace(blockhash))
            {
                m_writer.WritePropertyName("blockhash");
                m_writer.WriteValue(blockhash);
                m_writer.WritePropertyName("blocksize");
                m_writer.WriteValue(blocksize);
            }

            m_writer.WriteEndObject();
        }
Esempio n. 5
0
 public void AddMetaEntry(FilelistEntryType type, string name, string metahash, long metasize)
 {
     m_foldercount++;
     m_writer.WriteStartObject();
     m_writer.WritePropertyName("type");
     m_writer.WriteValue(type.ToString());
     m_writer.WritePropertyName("path");
     m_writer.WriteValue(name);
     if (metahash != null)
     {
         m_writer.WritePropertyName("metahash");
         m_writer.WriteValue(metahash);
         m_writer.WritePropertyName("metasize");
         m_writer.WriteValue(metasize);
     }
     m_writer.WriteEndObject();
 }
 public void AddMetaEntry(FilelistEntryType type, string name, string metahash, long metasize)
 {
     m_foldercount++;
     m_writer.WriteStartObject();
     m_writer.WritePropertyName("type");
     m_writer.WriteValue(type.ToString());
     m_writer.WritePropertyName("path");
     m_writer.WriteValue(name);
     if (metahash != null)
     {
         m_writer.WritePropertyName("metahash");
         m_writer.WriteValue(metahash);
         m_writer.WritePropertyName("metasize");
         m_writer.WriteValue(metasize);
     }
     m_writer.WriteEndObject();
 }
        private void AddFileEntry(FilelistEntryType type, string name, string filehash, long size, DateTime lastmodified, string metahash, long metasize, IEnumerable<string> blocklisthashes)
        {
            m_filecount++;
            m_writer.WriteStartObject();
            m_writer.WritePropertyName("type");
            m_writer.WriteValue(type.ToString());
            m_writer.WritePropertyName("path");
            m_writer.WriteValue(name);
            m_writer.WritePropertyName("hash");
            m_writer.WriteValue(filehash);
            m_writer.WritePropertyName("size");
            m_writer.WriteValue(size);
            m_writer.WritePropertyName("time");
            m_writer.WriteValue(Library.Utility.Utility.SerializeDateTime(lastmodified));
            if (metahash != null)
            {
                m_writer.WritePropertyName("metahash");
                m_writer.WriteValue(metahash);
                m_writer.WritePropertyName("metasize");
                m_writer.WriteValue(metasize);
            }

            if (blocklisthashes != null)
            {
                //Slightly akward, but we avoid writing if there are no entries 
                var en = blocklisthashes.GetEnumerator();
                if (en.MoveNext() && !string.IsNullOrEmpty(en.Current))
                {
                    m_writer.WritePropertyName("blocklists");
                    m_writer.WriteStartArray();
                    m_writer.WriteValue(en.Current);
                    while(en.MoveNext())
                        m_writer.WriteValue(en.Current);
                    m_writer.WriteEndArray();
                }
            }

            m_writer.WriteEndObject();
        }
Esempio n. 8
0
 public void Add(string path, long size, string hash, long metasize, string metahash, IEnumerable <string> blocklistHashes, FilelistEntryType type, DateTime time)
 {
     m_insertCommand.SetParameterValue(0, path);
     m_insertCommand.SetParameterValue(1, hash == null ? -1: size);
     m_insertCommand.SetParameterValue(2, hash);
     m_insertCommand.SetParameterValue(3, metasize);
     m_insertCommand.SetParameterValue(4, metahash);
     m_insertCommand.ExecuteNonQuery();
 }
Esempio n. 9
0
 public void Add(string path, long size, string hash, long metasize, string metahash, IEnumerable<string> blocklistHashes, FilelistEntryType type, DateTime time)
 {
     m_insertCommand.SetParameterValue(0, path);
     m_insertCommand.SetParameterValue(1, hash == null ? - 1: size);
     m_insertCommand.SetParameterValue(2, hash);
     m_insertCommand.SetParameterValue(3, metasize);
     m_insertCommand.SetParameterValue(4, metahash);
     m_insertCommand.ExecuteNonQuery();
 }