Exemplo n.º 1
0
 public static void NET_Flush(IFileStream mfs)
 {
     mfs.Flush(true);
 }
Exemplo n.º 2
0
 public static void NET_Flush(IFileStream mfs)
 {
     mfs.Flush(true);
 }
Exemplo n.º 3
0
        private void DoPackage(byte[] pack)
        {
            ulong fileNumber = pack.Substring(0, 8).To_UInt64_BigEndian();
            byte  type       = pack.Substring(8, 1)[0];

            string filename = BackupFNP.ParseFilenameBack(fileNumber);
            long   offset   = 0;

            byte[] data = null;
            //Console.WriteLine("t: {0}", type);

            //types description
            // 0 - table file, 1 - rollback file, 2 - rollbackhelper, 3 - recreate table file (only table file), 4 - recreate rollback file (only rollback file), 5 - removing complete table

            IFileStream lfs      = null;
            bool        contains = false;
            string      tfn      = String.Empty;

            switch (type)
            {
            case 0:

                //Write into table file
                lfs = this.GetFileStream(filename);

                //if (lfs == null)
                //{
                //    Console.WriteLine("Backup lfs = null");
                //    return;
                //}

                offset       = pack.Substring(9, 8).To_Int64_BigEndian();
                data         = pack.Substring(17);
                lfs.Position = offset;
                lfs.Write(data, 0, data.Length);
                lfs.Flush();
                break;

            case 1:
                //write into rollback file
                lfs = this.GetFileStream(filename + ".rol");

                if (lfs == null)
                {
                    System.Diagnostics.Debug.WriteLine("Backup lfs = null");
                    return;
                }

                offset       = pack.Substring(9, 8).To_Int64_BigEndian();
                data         = pack.Substring(17);
                lfs.Position = offset;
                lfs.Write(data, 0, data.Length);
                lfs.Flush();
                break;

            case 2:
                //write into rollbackhelper
                lfs = this.GetFileStream(filename + ".rhp");

                if (lfs == null)
                {
                    System.Diagnostics.Debug.WriteLine("Backup lfs = null");
                    return;
                }

                offset       = pack.Substring(9, 8).To_Int64_BigEndian();
                data         = pack.Substring(17);
                lfs.Position = offset;
                lfs.Write(data, 0, data.Length);
                lfs.Flush();
                break;

            case 3:

                //3 - recreate table file (only table file)

                contains = ds.ContainsKey(filename);
                if (contains)
                {
                    ds[filename].Dispose();
                }

                tfn = Path.Combine(this.DataBaseFolder, filename);
                this.configuration.FSFactory.Delete(tfn);

                if (!contains)
                {
                    ds.Add(filename, null);
                }

                ds[filename] = this.configuration.FSFactory.CreateType2(tfn);    // new FileStream(tfn, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);

                break;

            case 4:

                //4 - recreate rollback file (only rollback file)

                contains = ds.ContainsKey(filename + ".rol");
                if (contains)
                {
                    ds[filename + ".rol"].Dispose();
                }

                tfn = Path.Combine(this.DataBaseFolder, filename + ".rol");
                this.configuration.FSFactory.Delete(tfn);

                if (!contains)
                {
                    ds.Add(filename + ".rol", null);
                }

                ds[filename + ".rol"] = this.configuration.FSFactory.CreateType2(tfn);    //new FileStream(tfn, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);

                break;

            case 5:

                //5 - removing complete table

                if (ds.ContainsKey(filename))
                {
                    ds[filename].Dispose();
                }

                ds.Remove(filename);

                if (ds.ContainsKey(filename + ".rol"))
                {
                    ds[filename + ".rol"].Dispose();
                }

                ds.Remove(filename + ".rol");

                if (ds.ContainsKey(filename + ".rhp"))
                {
                    ds[filename + ".rhp"].Dispose();
                }

                ds.Remove(filename + ".rhp");

                break;
            }
        }