public virtual Slot AllocateSlot(int length)
        {
            if (length <= 0)
            {
                throw new ArgumentException();
            }
            if (_freespaceManager != null && _freespaceManager.IsStarted())
            {
                Slot slot = _freespaceManager.AllocateSlot(length);
                if (slot != null)
                {
                    if (DTrace.enabled)
                    {
                        DTrace.GetSlot.LogLength(slot.Address(), slot.Length());
                    }
                    return(slot);
                }
                while (GrowDatabaseByConfiguredSize())
                {
                    slot = _freespaceManager.AllocateSlot(length);
                    if (slot != null)
                    {
                        if (DTrace.enabled)
                        {
                            DTrace.GetSlot.LogLength(slot.Address(), slot.Length());
                        }
                        return(slot);
                    }
                }
            }
            Slot appendedSlot = AppendBytes(length);

            if (DTrace.enabled)
            {
                DTrace.GetSlot.LogLength(appendedSlot.Address(), appendedSlot.Length());
            }
            return(appendedSlot);
        }
 public virtual bool IsStarted()
 {
     return(_delegate.IsStarted());
 }