Example #1
0
        internal object Fetch(Guid guid)
        {
            object b = null;

            _objectStore.GetObject(guid, out b);

            return(b);
        }
        private string CreatePackageForSend(ReplicationPacket packet, out int last)
        {
            int      maxc = INTERNALLIMIT;
            WhatItem what = GetBranchConfig(packet.branchname).what;

            if (what.PackageItemLimit > 0)
            {
                maxc = what.PackageItemLimit;
            }
            string outFolder     = _OutboxPath;
            int    packageNumber = packet.lastrecord;
            int    i             = packet.lastrecord;
            string filename      = outFolder + _S + packet.branchname + _S + packageNumber.ToString("0000000000") + ".mgdat";

            if (i < _docs.RecordCount())
            {
                StorageFile <Guid> package = new StorageFile <Guid>(filename, SF_FORMAT.JSON, true);
                while (maxc > 0)
                {
                    var meta = _docs.GetMeta(i);
                    if (meta == null)
                    {
                        break;
                    }
                    if (meta.isReplicated == false && MatchType(meta.typename, what))
                    {
                        if (meta.isDeleted == false || what.PropogateHQDeletes)
                        {
                            object obj = _docs.GetObject(i, out meta);
                            package.WriteObject(meta.key, obj);
                            maxc--;
                        }
                    }

                    i++;
                }
                package.Shutdown();
                packageNumber++;
                // compress the file
                using (FileStream read = File.OpenRead(filename))
                    using (FileStream outp = File.Create(filename + ".gz"))
                        CompressForBackup(read, outp);

                // delete uncompressed file
                File.Delete(filename);
            }

            last = i;
            return(filename + ".gz");
        }
        private string CreatePackageForSend()
        {
            int maxc = INTERNALLIMIT;

            if (_clientConfig.what.PackageItemLimit > 0)
            {
                maxc = _clientConfig.what.PackageItemLimit;
            }
            string outFolder     = _OutboxPath;
            int    packageNumber = _clientConfig.outPackageNumber;
            int    i             = _clientConfig.lastCounter;
            string filename      = outFolder + packageNumber.ToString("0000000000") + ".mgdat";
            int    total         = _docs.RecordCount();

            if (i < total)
            {
                StorageFile <Guid> package = new StorageFile <Guid>(filename, SF_FORMAT.JSON, true);
                while (maxc > 0 && i < total)
                {
                    var meta = _docs.GetMeta(i);
                    if (meta == null)
                    {
                        break;
                    }
                    if (meta.isReplicated == false && MatchType(meta.typename))
                    {
                        object obj = _docs.GetObject(i, out meta);
                        package.WriteObject(meta.key, obj);
                        maxc--;
                    }

                    i++;
                }
                package.Shutdown();
                packageNumber++;
                // compress the file
                using (FileStream read = File.OpenRead(filename))
                    using (FileStream outp = File.Create(filename + ".gz"))
                        CompressForBackup(read, outp);

                // delete uncompressed file
                File.Delete(filename);

                _clientConfig.lastCounter      = i;
                _clientConfig.outPackageNumber = packageNumber;
                SaveConfig();
                return(filename + ".gz");
            }
            return("");
        }
Example #4
0
        private void RebuildFromScratch(IDocStorage <Guid> docs)
        {
            _rebuilding = true;
            try
            {
                insertmethod = this.GetType().GetMethod("Insert", BindingFlags.Instance | BindingFlags.NonPublic);
                _log.Debug("Rebuilding view from scratch...");
                _log.Debug("View = " + _view.Name);
                DateTime dt = FastDateTime.Now;

                int c = docs.RecordCount();
                for (int i = 0; i < c; i++)
                {
                    StorageItem <Guid> meta = null;
                    object             b    = docs.GetObject(i, out meta);
                    if (meta != null && meta.isDeleted)
                    {
                        Delete(meta.key);
                    }
                    else
                    {
                        if (b != null)
                        {
                            object obj = b;
                            Type   t   = obj.GetType();
                            if (t == typeof(View_delete))
                            {
                                View_delete vd = (View_delete)obj;
                                if (vd.Viewname.ToLower() == this._view.Name.ToLower())
                                {
                                    ViewDelete(vd.Filter);
                                }
                            }
                            else if (t == typeof(View_insert))
                            {
                                View_insert vi = (View_insert)obj;
                                if (vi.Viewname.ToLower() == this._view.Name.ToLower())
                                {
                                    ViewInsert(vi.ID, vi.RowObject);
                                }
                            }
                            else if (t.IsSubclassOf(basetype) || t == basetype)
                            {
                                var m = insertmethod.MakeGenericMethod(new Type[] { obj.GetType() });
                                m.Invoke(this, new object[] { meta.key, obj });
                            }
                        }
                        else
                        {
                            _log.Error("Doc is null : " + meta.key);
                        }
                    }
                }
                _log.Debug("rebuild view '" + _view.Name + "' done (s) = " + FastDateTime.Now.Subtract(dt).TotalSeconds);

                // write version.dat file when done
                File.WriteAllText(_Path + _view.Name + ".version", _view.Version.ToString());
            }
            catch (Exception ex)
            {
                _log.Error("Rebuilding View failed : " + _view.Name, ex);
            }
            _rebuilding = false;
        }