Example #1
0
 public override void WriteFixedPart(LocalObjectContainer file, bool startFileLockingThread
     , bool shuttingDown, StatefulBuffer writer, int blockSize)
 {
     var systemData = file.SystemData();
     writer.Append(Signature);
     writer.WriteByte(Version());
     writer.WriteInt((int) TimeToWrite(_timerFileLock.OpenTime(), shuttingDown));
     writer.WriteLong(TimeToWrite(_timerFileLock.OpenTime(), shuttingDown));
     writer.WriteLong(TimeToWrite(Runtime.CurrentTimeMillis(), shuttingDown));
     writer.WriteInt(blockSize);
     writer.WriteInt(systemData.ClassCollectionID());
     writer.WriteByte(systemData.IdSystemType());
     writer.WriteInt(((FileHeaderVariablePart2) _variablePart).Address());
     writer.WriteInt(((FileHeaderVariablePart2) _variablePart).Length());
     writer.WriteInt(_transactionPointerAddress);
     writer.Write();
     if (shuttingDown)
     {
         WriteVariablePart(file, true);
     }
     else
     {
         file.SyncFiles();
     }
     if (startFileLockingThread)
     {
         file.ThreadPool().Start("db4o lock thread", _timerFileLock);
     }
 }
Example #2
0
 /// <exception cref="Db4objects.Db4o.Ext.Db4oIOException"></exception>
 public override sealed void InitNew(LocalObjectContainer file)
 {
     NewTimerFileLock(file);
     OldEncryptionOff(file);
     _variablePart = CreateVariablePart(file);
     WriteVariablePart(file);
 }
Example #3
0
        public static IIdSystem NewInstance(LocalObjectContainer localContainer)
        {
            var systemData = localContainer.SystemData();
            var idSystemType = systemData.IdSystemType();
            switch (idSystemType)
            {
                case Legacy:
                {
                    return new PointerBasedIdSystem(localContainer);
                }

                case PointerBased:
                {
                    return new PointerBasedIdSystem(localContainer);
                }

                case StackedBtree:
                {
                    var inMemoryIdSystem = new InMemoryIdSystem(localContainer);
                    var bTreeIdSystem = new BTreeIdSystem(localContainer, inMemoryIdSystem);
                    systemData.FreespaceIdSystem(bTreeIdSystem.FreespaceIdSystem());
                    return new BTreeIdSystem(localContainer, bTreeIdSystem);
                }

                case SingleBtree:
                {
                    var smallInMemoryIdSystem = new InMemoryIdSystem(localContainer);
                    var smallBTreeIdSystem = new BTreeIdSystem(localContainer, smallInMemoryIdSystem
                        );
                    systemData.FreespaceIdSystem(smallBTreeIdSystem.FreespaceIdSystem());
                    return smallBTreeIdSystem;
                }

                case InMemory:
                {
                    return new InMemoryIdSystem(localContainer);
                }

                case Custom:
                {
                    var customIdSystemFactory = localContainer.ConfigImpl.CustomIdSystemFactory
                        ();
                    if (customIdSystemFactory == null)
                    {
                        throw new Db4oFatalException(
                            "Custom IdSystem configured but no factory was found. See IdSystemConfiguration#useCustomSystem()"
                            );
                    }
                    return customIdSystemFactory.NewInstance(localContainer);
                }

                default:
                {
                    return new PointerBasedIdSystem(localContainer);
                    break;
                }
            }
        }
Example #4
0
 public BTreeFreespaceManager(LocalObjectContainer file, IProcedure4 slotFreedCallback
     , int discardLimit, int remainderSizeLimit) : base(slotFreedCallback, discardLimit
         , remainderSizeLimit)
 {
     _file = file;
     _delegate = new InMemoryFreespaceManager(slotFreedCallback, discardLimit, remainderSizeLimit
         );
     _idSystem = file.SystemData().FreespaceIdSystem();
 }
Example #5
0
 public SodaQueryComparator(LocalObjectContainer container, ClassMetadata extent,
     Ordering[] orderings)
 {
     _container = container;
     _transaction = ((LocalTransaction) _container.Transaction);
     _extentType = extent;
     _orderings = orderings;
     ResolveFieldPaths(orderings);
 }
 /// <exception cref="Db4objects.Db4o.Internal.FieldIndexException"></exception>
 protected virtual void RebuildIndexForObject(LocalObjectContainer container, int
     objectId)
 {
     var writer = container.ReadStatefulBufferById(container.SystemTransaction
         (), objectId);
     if (writer != null)
     {
         RebuildIndexForWriter(container, writer, objectId);
     }
 }
 public virtual bool RebuildIndexForClass(LocalObjectContainer container, ClassMetadata
     classMetadata)
 {
     var ids = classMetadata.GetIDs();
     for (var i = 0; i < ids.Length; i++)
     {
         RebuildIndexForObject(container, (int) ids[i]);
     }
     return ids.Length > 0;
 }
Example #8
0
 private TransactionLogHandler NewTransactionLogHandler(LocalObjectContainer container
     )
 {
     var fileBased = container.Config().FileBasedTransactionLog() && container is IoAdaptedObjectContainer;
     if (!fileBased)
     {
         return new EmbeddedTransactionLogHandler(container);
     }
     var fileName = ((IoAdaptedObjectContainer) container).FileName();
     return new FileBasedTransactionLogHandler(container, fileName);
 }
Example #9
0
 public FileHeaderVariablePart1(LocalObjectContainer container, int id) : base(container
     )
 {
     // The variable part format is:
     // (int) converter version
     // (byte) freespace system used
     // (int)  freespace address
     // (int) identity ID
     // (long) versionGenerator
     // (int) uuid index ID
     _id = id;
 }
Example #10
0
 public override sealed void WriteVariablePart(LocalObjectContainer file, bool shuttingDown
     )
 {
     if (!IsInitalized())
     {
         return;
     }
     var commitHook = Commit(shuttingDown);
     file.SyncFiles();
     commitHook.Run();
     file.SyncFiles();
 }
Example #11
0
 private void RebuildUUIDIndex(LocalObjectContainer file)
 {
     var uuid = file.UUIDIndex();
     var i = file.ClassCollection().Iterator();
     while (i.MoveNext())
     {
         var clazz = i.CurrentClass();
         if (clazz.GenerateUUIDs())
         {
             uuid.RebuildIndexForClass(file, clazz);
         }
     }
 }
 private void BuildCommitTimestampIndex(LocalObjectContainer container)
 {
     versionFieldMetadata = container.Handlers.Indexes()._version;
     var i = container.ClassCollection().Iterator();
     while (i.MoveNext())
     {
         var clazz = i.CurrentClass();
         if (clazz.HasVersionField() && !clazz.IsStruct())
         {
             RebuildIndexForClass(container, clazz);
         }
     }
 }
Example #13
0
 public virtual Tree Free(LocalObjectContainer file, Tree treeRoot, Slot
     slot)
 {
     file.Free(_slot.Address(), _slot.Length());
     if (RemoveReferenceIsLast())
     {
         if (treeRoot != null)
         {
             return treeRoot.RemoveNode(this);
         }
     }
     PointTo(slot);
     return treeRoot;
 }
Example #14
0
 private static FileHeader DetectFileHeader(LocalObjectContainer file, ByteArrayBuffer
     reader)
 {
     for (var i = 0; i < AvailableFileHeaders.Length; i++)
     {
         reader.Seek(0);
         var result = AvailableFileHeaders[i].NewOnSignatureMatch(file, reader);
         if (result != null)
         {
             return result;
         }
     }
     return null;
 }
Example #15
0
 /// <exception cref="Db4objects.Db4o.Ext.OldFormatException"></exception>
 public static FileHeader Read(LocalObjectContainer file)
 {
     var reader = PrepareFileHeaderReader(file);
     var header = DetectFileHeader(file, reader);
     if (header == null)
     {
         Exceptions4.ThrowRuntimeException(Messages.IncompatibleFormat
             , file.ToString());
     }
     else
     {
         header.Read(file, reader);
     }
     return header;
 }
Example #16
0
 public virtual void Convert(LocalObjectContainer container, int classIndexId, BTree
     bTree)
 {
     var trans = container.SystemTransaction();
     var reader = container.ReadBufferById(trans, classIndexId);
     if (reader == null)
     {
         return;
     }
     var entries = reader.ReadInt();
     for (var i = 0; i < entries; i++)
     {
         bTree.Add(trans, reader.ReadInt());
     }
 }
Example #17
0
 protected override void Read(LocalObjectContainer file, ByteArrayBuffer reader)
 {
     NewTimerFileLock(file);
     OldEncryptionOff(file);
     CheckThreadFileLock(file, reader);
     reader.Seek(TransactionPointerOffset);
     file.SystemData().TransactionPointer1(reader.ReadInt());
     file.SystemData().TransactionPointer2(reader.ReadInt());
     reader.Seek(BlocksizeOffset);
     file.BlockSizeReadFromFile(reader.ReadInt());
     var systemData = file.SystemData();
     systemData.ClassCollectionID(reader.ReadInt());
     reader.ReadInt();
     // was freespace ID, can no longer be read
     _variablePart = CreateVariablePart(file);
     var variablePartId = reader.ReadInt();
     _variablePart.Read(variablePartId, 0);
 }
Example #18
0
 public FileHeaderVariablePart2(LocalObjectContainer container, int address, int length
     ) : base(container)
 {
     // The variable part format is:
     // (long) checksum
     // (int) address of InMemoryIdSystem slot
     // (int) length of InMemoryIdSystem slot
     // (int) address of InMemoryFreespace
     // (int) length of InMemoryFreespace
     // (int) BTreeFreespace id
     // (int) converter version
     // (int) uuid index ID
     // (int) identity ID
     // (long) versionGenerator
     // (byte) freespace system used
     _address = address;
     _length = length;
 }
Example #19
0
 public BTreeIdSystem(LocalObjectContainer container, IStackableIdSystem parentIdSystem
     , int maxValidId)
 {
     _container = container;
     _parentIdSystem = parentIdSystem;
     _transactionalIdSystem = container.NewTransactionalIdSystem(null, new _IClosure4_40
         (parentIdSystem));
     var persistentArrayId = parentIdSystem.ChildId();
     if (persistentArrayId == 0)
     {
         InitializeNew();
     }
     else
     {
         InitializeExisting(persistentArrayId);
     }
     _idGenerator = new SequentialIdGenerator(new _IFunction4_52(this), IdGeneratorValue
         (), _container.Handlers.LowestValidId(), maxValidId);
 }
 protected virtual void RebuildIndexForWriter(LocalObjectContainer container, StatefulBuffer
     buffer, int objectId)
 {
     var objectHeader = new ObjectHeader(container, buffer);
     var context = new ObjectIdContextImpl(container.SystemTransaction
         (), buffer, objectHeader, objectId);
     var classMetadata = context.ClassMetadata();
     if (classMetadata.IsStruct())
     {
         // We don't keep version information for structs.
         return;
     }
     if (classMetadata.SeekToField(container.SystemTransaction(), buffer, versionFieldMetadata
         ) != HandlerVersion.Invalid)
     {
         var version = ((long) versionFieldMetadata.Read(context));
         if (version != 0)
         {
             var t = (LocalTransaction) container.SystemTransaction();
             t.CommitTimestampSupport().Put(container.SystemTransaction(), objectId, version);
         }
     }
 }
Example #21
0
 protected override void Read(LocalObjectContainer container, ByteArrayBuffer reader
     )
 {
     NewTimerFileLock(container);
     OldEncryptionOff(container);
     CheckThreadFileLock(container, reader);
     reader.Seek(BlocksizeOffset);
     container.BlockSizeReadFromFile(reader.ReadInt());
     var systemData = container.SystemData();
     systemData.ClassCollectionID(reader.ReadInt());
     container.SystemData().IdSystemType(reader.ReadByte());
     _variablePart = CreateVariablePart(container);
     var variablePartAddress = reader.ReadInt();
     var variablePartLength = reader.ReadInt();
     _variablePart.Read(variablePartAddress, variablePartLength);
     _transactionPointerAddress = reader.ReadInt();
     if (_transactionPointerAddress != 0)
     {
         var buffer = new ByteArrayBuffer(TransactionPointerLength);
         buffer.Read(container, _transactionPointerAddress, 0);
         systemData.TransactionPointer1(buffer.ReadInt());
         systemData.TransactionPointer2(buffer.ReadInt());
     }
 }
Example #22
0
 protected abstract FileHeader NewOnSignatureMatch(LocalObjectContainer file, ByteArrayBuffer
                                                   reader);
Example #23
0
 public SodaQueryComparator(LocalObjectContainer container, Type extentType, SodaQueryComparator.Ordering
                            [] orderings) : this(container, container.ProduceClassMetadata(container.Reflector
                                                                                               ().ForClass(extentType)), orderings)
 {
 }
Example #24
0
 public static bool LockedByOtherSession(LocalObjectContainer container, long lastAccessTime
                                         )
 {
     return(container.NeedsLockFileThread() && (lastAccessTime != 0));
 }
Example #25
0
 /// <exception cref="Db4objects.Db4o.Ext.Db4oIOException"></exception>
 public abstract void InitNew(LocalObjectContainer file);
Example #26
0
 protected abstract void Read(LocalObjectContainer file, ByteArrayBuffer reader);
Example #27
0
 public virtual void WriteVariablePart(LocalObjectContainer file)
 {
     WriteVariablePart(file, false);
 }
Example #28
0
 public MockIdSystem(LocalObjectContainer container) : base(container)
 {
 }
Example #29
0
 protected TransactionLogHandler(LocalObjectContainer container)
 {
     _container = container;
 }
 public ObjectServerImpl(LocalObjectContainer container, IServerConfiguration serverConfig
                         , int port) : this(container, (ServerConfigurationImpl)serverConfig, (port < 0 ?
                                                                                               0 : port), port == 0)
 {
 }
Example #31
0
 public static ObjectHeader ScrollBufferToContent
     (LocalObjectContainer container, ByteArrayBuffer buffer)
 {
     return new ObjectHeader(container, buffer);
 }
Example #32
0
 public SodaQueryComparator(LocalObjectContainer container, Type extentType, Ordering
     [] orderings) : this(container, container.ProduceClassMetadata(container.Reflector
         ().ForClass(extentType)), orderings)
 {
 }
Example #33
0
 /// <exception cref="Db4objects.Db4o.Ext.Db4oIOException"></exception>
 public override void CheckIfOtherSessionAlive(LocalObjectContainer container, int
     address, int offset, long lastAccessTime)
 {
 }
Example #34
0
 public abstract FileHeaderVariablePart CreateVariablePart(LocalObjectContainer file
     );
Example #35
0
 protected override FileHeader NewOnSignatureMatch(LocalObjectContainer file, ByteArrayBuffer
     reader)
 {
     if (SignatureMatches(reader, Signature, Version()))
     {
         return CreateNew();
     }
     return null;
 }
Example #36
0
 public override void Read(LocalObjectContainer container, Slot slot)
 {
 }
 public FileBasedTransactionLogHandler(LocalObjectContainer container, string fileName
                                       ) : base(container)
 {
     _fileName = fileName;
 }
Example #38
0
 protected virtual void NewTimerFileLock(LocalObjectContainer file)
 {
     _timerFileLock = TimerFileLock.ForFile(file);
     _timerFileLock.SetAddresses(0, OpenTimeOffset, AccessTimeOffset);
 }
 public FileHeaderVariablePart2(LocalObjectContainer container) : this(container,
                                                                       0, 0)
 {
 }
Example #40
0
 public SystemUpStage(LocalObjectContainer file) : base(file)
 {
 }
Example #41
0
 // TODO: freespaceID should not be passed here, it should be taken from SystemData
 public abstract void WriteFixedPart(LocalObjectContainer file, bool startFileLockingThread
                                     , bool shuttingDown, StatefulBuffer writer, int blockSize);
Example #42
0
 protected ConversionStage(LocalObjectContainer file)
 {
     _file = file;
 }
Example #43
0
 public abstract void WriteVariablePart(LocalObjectContainer file, bool shuttingDown
                                        );
Example #44
0
 internal static long BTreeUsage(LocalObjectContainer db, BTree btree, ISlotMap slotMap
                                 )
 {
     return(BTreeUsage(db.SystemTransaction(), db.IdSystem(), btree, slotMap));
 }
Example #45
0
 public abstract void ReadIdentity(LocalObjectContainer container);
 protected abstract void Backup(LocalObjectContainer origDb, string backupPath);
Example #47
0
 public abstract void CompleteInterruptedTransaction(LocalObjectContainer container
                                                     );
Example #48
0
 public DelegatingIdSystem(LocalObjectContainer container)
 {
     _delegate = new InMemoryIdSystem(container);
 }
Example #49
0
 protected FileHeaderVariablePart(LocalObjectContainer container)
 {
     _container = container;
 }
 /// <param name="file"></param>
 private void FreeOldUUIDMetaIndex(LocalObjectContainer file)
 {
 }
 public _IRunnable_351(ObjectServerImpl _enclosing, LocalObjectContainer threadContainer
                       )
 {
     this._enclosing      = _enclosing;
     this.threadContainer = threadContainer;
 }
Example #52
0
 protected virtual void OldEncryptionOff(LocalObjectContainer file)
 {
     file._handlers.OldEncryptionOff();
 }
 protected override void Backup(LocalObjectContainer origDb, string backupPath)
 {
     origDb.Backup(BackupStorage(), backupPath);
 }
 public EmbeddedTransactionLogHandler(LocalObjectContainer container) : base(container
     )
 {
 }
Example #55
0
 public PointerBasedIdSystem(LocalObjectContainer container)
 {
     _container             = container;
     _transactionLogHandler = NewTransactionLogHandler(container);
 }
Example #56
0
 public virtual void Write(LocalObjectContainer container)
 {
 }
Example #57
0
 public IIdSystem NewInstance(LocalObjectContainer container)
 {
     return(new MockIdSystem(container));
 }
Example #58
0
 public virtual void Read(LocalObjectContainer container, Slot slot)
 {
 }
Example #59
0
 public FileHeaderVariablePart3(LocalObjectContainer container) : base(container)
 {
 }
Example #60
0
 public ClassCollectionAvailableStage(LocalObjectContainer file) : base(file)
 {
 }