Exemplo n.º 1
0
		public override void Defragment(IDefragmentContext context)
		{
			int payLoadOffSet = context.ReadInt();
			if (payLoadOffSet == 0)
			{
				return;
			}
			int savedOffSet = context.Offset();
			context.Seek(payLoadOffSet);
			int classMetadataId = context.CopyIDReturnOriginalID();
			ITypeHandler4 typeHandler = CorrectTypeHandlerVersionFor(context, classMetadataId
				);
			if (typeHandler != null)
			{
				if (IsPlainObject(typeHandler))
				{
					context.CopySlotlessID();
				}
				else
				{
					SeekSecondaryOffset(context, typeHandler);
					context.Defragment(typeHandler);
				}
			}
			context.Seek(savedOffSet);
		}
Exemplo n.º 2
0
        public virtual void Defragment(IDefragmentContext context)
        {
            int payLoadOffSet = context.ReadInt();

            if (payLoadOffSet == 0)
            {
                return;
            }
            int savedOffSet = context.Offset();

            context.Seek(payLoadOffSet);
            try
            {
                int           classMetadataId = context.CopyIDReturnOriginalID();
                ITypeHandler4 typeHandler     = CorrectTypeHandlerVersionFor(context, classMetadataId
                                                                             );
                if (typeHandler == null)
                {
                    return;
                }
                SeekSecondaryOffset(context, typeHandler);
                if (IsPlainObject(typeHandler))
                {
                    context.Defragment(new PlainObjectHandler());
                }
                else
                {
                    context.Defragment(typeHandler);
                }
            }
            finally
            {
                context.Seek(savedOffSet);
            }
        }
Exemplo n.º 3
0
        private ClassMetadata ClassMetadata(IDefragmentContext context
                                            , ArrayInfo info)
        {
            var classMetadataId = ClassIDFromInfo(Container(context), info);

            return(Container(context).ClassMetadataForID(classMetadataId));
        }
Exemplo n.º 4
0
		public static void Defragment(IDefragmentContext context, ArrayHandler handler)
		{
			int sourceAddress = context.SourceBuffer().ReadInt();
			int length = context.SourceBuffer().ReadInt();
			if (sourceAddress == 0 && length == 0)
			{
				context.TargetBuffer().WriteInt(0);
				context.TargetBuffer().WriteInt(0);
				return;
			}
			Slot slot = context.AllocateMappedTargetSlot(sourceAddress, length);
			ByteArrayBuffer sourceBuffer = null;
			try
			{
				sourceBuffer = context.SourceBufferByAddress(sourceAddress, length);
			}
			catch (IOException exc)
			{
				throw new Db4oIOException(exc);
			}
			DefragmentContextImpl payloadContext = new DefragmentContextImpl(sourceBuffer, (DefragmentContextImpl
				)context);
			handler.DefragmentSlot(payloadContext);
			payloadContext.WriteToTarget(slot.Address());
			context.TargetBuffer().WriteInt(slot.Address());
			context.TargetBuffer().WriteInt(length);
		}
Exemplo n.º 5
0
        private static void DefragmentElementHandlerId(IDefragmentContext context)
        {
            int offset = context.Offset();

            context.CopyID();
            context.Seek(offset);
        }
Exemplo n.º 6
0
        private Db4objects.Db4o.Internal.ClassMetadata ClassMetadata(IDefragmentContext context
                                                                     , ArrayInfo info)
        {
            int classMetadataId = ClassIDFromInfo(Container(context), info);

            return(Container(context).ClassMetadataForID(classMetadataId));
        }
Exemplo n.º 7
0
        public static void Defragment(IDefragmentContext context, ArrayHandler handler)
        {
            int sourceAddress = context.SourceBuffer().ReadInt();
            int length        = context.SourceBuffer().ReadInt();

            if (sourceAddress == 0 && length == 0)
            {
                context.TargetBuffer().WriteInt(0);
                context.TargetBuffer().WriteInt(0);
                return;
            }
            Slot            slot         = context.AllocateMappedTargetSlot(sourceAddress, length);
            ByteArrayBuffer sourceBuffer = null;

            try
            {
                sourceBuffer = context.SourceBufferByAddress(sourceAddress, length);
            }
            catch (IOException exc)
            {
                throw new Db4oIOException(exc);
            }
            DefragmentContextImpl payloadContext = new DefragmentContextImpl(sourceBuffer, (DefragmentContextImpl
                                                                                            )context);

            handler.DefragmentSlot(payloadContext);
            payloadContext.WriteToTarget(slot.Address());
            context.TargetBuffer().WriteInt(slot.Address());
            context.TargetBuffer().WriteInt(length);
        }
Exemplo n.º 8
0
 private ITypeHandler4 CorrectHandlerVersion(IDefragmentContext context, ITypeHandler4
                                             handler, ArrayInfo info)
 {
     Db4objects.Db4o.Internal.ClassMetadata classMetadata = ClassMetadata(context, info
                                                                          );
     return(HandlerRegistry.CorrectHandlerVersion(context, handler, classMetadata));
 }
Exemplo n.º 9
0
        public void DefragmentSlot(IDefragmentContext context)
        {
            if (IsUntypedByteArray(context))
            {
                return;
            }
            int       classIdOffset = context.TargetBuffer().Offset();
            ArrayInfo info          = NewArrayInfo();

            ReadInfo(context.Transaction(), context, info);
            DefragmentWriteMappedClassId(context, info, classIdOffset);
            int elementCount = info.ElementCount();

            if (HasNullBitmap(info))
            {
                BitMap4 bitMap = ReadNullBitmap(context, elementCount);
                elementCount -= ReducedCountForNullBitMap(elementCount, bitMap);
            }
            ITypeHandler4 correctTypeHandlerVersion = CorrectHandlerVersion(context, _handler
                                                                            , info);

            for (int i = 0; i < elementCount; i++)
            {
                context.Defragment(correctTypeHandlerVersion);
            }
        }
Exemplo n.º 10
0
        public override void Defragment(IDefragmentContext context)
        {
            var payLoadOffSet = context.ReadInt();

            if (payLoadOffSet == 0)
            {
                return;
            }
            var savedOffSet = context.Offset();

            context.Seek(payLoadOffSet);
            var classMetadataId = context.CopyIDReturnOriginalID();
            var typeHandler     = CorrectTypeHandlerVersionFor(context, classMetadataId
                                                               );

            if (typeHandler != null)
            {
                if (IsPlainObject(typeHandler))
                {
                    context.CopySlotlessID();
                }
                else
                {
                    SeekSecondaryOffset(context, typeHandler);
                    context.Defragment(typeHandler);
                }
            }
            context.Seek(savedOffSet);
        }
Exemplo n.º 11
0
 public override void DefragAspect(IDefragmentContext context)
 {
     // database id
     context.CopyID();
     // uuid
     context.IncrementOffset(Const4.LongLength);
 }
Exemplo n.º 12
0
		public virtual void Defragment(IDefragmentContext context)
		{
			DefragmentElementHandlerId(context);
			ITypeHandler4 handler = ReadElementTypeHandler(context, context);
			int elementCount = context.ReadInt();
			for (int i = 0; i < elementCount; i++)
			{
				context.Defragment(handler);
			}
		}
Exemplo n.º 13
0
        public virtual void Defragment(IDefragmentContext context)
        {
            var handler      = ReadElementTypeHandler(context, context);
            var elementCount = context.ReadInt();

            for (var i = 0; i < elementCount; i++)
            {
                handler.Defragment(context);
            }
        }
Exemplo n.º 14
0
 public virtual void Defragment(IDefragmentContext context)
 {
     if (context.ClassMetadata().HasIdentity())
     {
         DefragmentSlot(context);
     }
     else
     {
         context.IncrementOffset(LinkLength());
     }
 }
Exemplo n.º 15
0
        public virtual void Defragment(IDefragmentContext context)
        {
            KeyValueHandlerPair handlers = ReadKeyValueTypeHandlers(context, context);
            int elementCount             = context.ReadInt();

            for (int i = elementCount; i > 0; i--)
            {
                context.Defragment(handlers._keyHandler);
                context.Defragment(handlers._valueHandler);
            }
        }
Exemplo n.º 16
0
        public virtual void Defragment(IDefragmentContext context)
        {
            DefragmentElementHandlerId(context);
            ITypeHandler4 handler      = ReadElementTypeHandler(context, context);
            int           elementCount = context.ReadInt();

            for (int i = 0; i < elementCount; i++)
            {
                context.Defragment(handler);
            }
        }
Exemplo n.º 17
0
        public override void DefragAspect(IDefragmentContext context)
        {
            if (!CanDefragment())
            {
                throw new InvalidOperationException("Field '" + ToString() + "' cannot be defragmented at this time."
                                                    );
            }
            ITypeHandler4 correctTypeHandlerVersion = HandlerRegistry.CorrectHandlerVersion(context
                                                                                            , GetHandler(), _fieldType);

            context.SlotFormat().DoWithSlotIndirection(context, correctTypeHandlerVersion, new
                                                       _IClosure4_1020(context, correctTypeHandlerVersion));
        }
Exemplo n.º 18
0
 public virtual void Defragment(IDefragmentContext context)
 {
     var pos = context.Offset();
     var id = context.ReadInt();
     var bTree = NewBTree(context, id);
     var services = (DefragmentServicesImpl) context.Services();
     var collector = new IDMappingCollector();
     services.RegisterBTreeIDs(bTree, collector);
     collector.Flush(services);
     context.Seek(pos);
     context.CopyID();
     bTree.DefragBTree(services);
 }
Exemplo n.º 19
0
        private void DefragmentWriteMappedClassId(IDefragmentContext context, ArrayInfo info
                                                  , int classIdOffset)
        {
            ByteArrayBuffer targetBuffer  = context.TargetBuffer();
            int             currentOffset = targetBuffer.Offset();

            targetBuffer.Seek(classIdOffset);
            int classID            = ClassIDFromInfo(Container(context), info);
            int mappedID           = context.MappedID(classID);
            int marshalledMappedId = ClassIdToMarshalledClassId(mappedID, info.Primitive());

            targetBuffer.WriteInt(marshalledMappedId);
            targetBuffer.Seek(currentOffset);
        }
Exemplo n.º 20
0
        protected virtual ITypeHandler4 CorrectTypeHandlerVersionFor(IDefragmentContext context
                                                                     , int classMetadataId)
        {
            ITypeHandler4 typeHandler = context.TypeHandlerForId(classMetadataId);

            if (null == typeHandler)
            {
                return(null);
            }
            ClassMetadata classMetadata = Container(context).ClassMetadataForID(classMetadataId
                                                                                );

            return(HandlerRegistry.CorrectHandlerVersion(context, typeHandler, classMetadata));
        }
Exemplo n.º 21
0
        public virtual void Defragment(IDefragmentContext context)
        {
            var pos       = context.Offset();
            var id        = context.ReadInt();
            var bTree     = NewBTree(context, id);
            var services  = (DefragmentServicesImpl)context.Services();
            var collector = new IDMappingCollector();

            services.RegisterBTreeIDs(bTree, collector);
            collector.Flush(services);
            context.Seek(pos);
            context.CopyID();
            bTree.DefragBTree(services);
        }
Exemplo n.º 22
0
		public override void Defragment(IDefragmentContext context)
		{
			int sourceId = context.SourceBuffer().ReadInt();
			if (sourceId == 0)
			{
				context.TargetBuffer().WriteInt(0);
				return;
			}
			int targetId = 0;
			try
			{
				targetId = context.MappedID(sourceId);
			}
			catch (MappingNotFoundException)
			{
				targetId = CopyDependentSlot(context, sourceId);
			}
			context.TargetBuffer().WriteInt(targetId);
		}
Exemplo n.º 23
0
        public override void Defragment(IDefragmentContext context)
        {
            int sourceId = context.SourceBuffer().ReadInt();

            if (sourceId == 0)
            {
                context.TargetBuffer().WriteInt(0);
                return;
            }
            int targetId = 0;

            try
            {
                targetId = context.MappedID(sourceId);
            }
            catch (MappingNotFoundException)
            {
                targetId = CopyDependentSlot(context, sourceId);
            }
            context.TargetBuffer().WriteInt(targetId);
        }
Exemplo n.º 24
0
		public override void Defragment(IDefragmentContext context)
		{
			int sourceAddress = context.SourceBuffer().ReadInt();
			int length = context.SourceBuffer().ReadInt();
			if (sourceAddress == 0 && length == 0)
			{
				context.TargetBuffer().WriteInt(0);
				context.TargetBuffer().WriteInt(0);
				return;
			}
			int targetAddress = 0;
			try
			{
				targetAddress = context.CopySlotToNewMapped(sourceAddress, length);
			}
			catch (IOException exc)
			{
				throw new Db4oIOException(exc);
			}
			context.TargetBuffer().WriteInt(targetAddress);
			context.TargetBuffer().WriteInt(length);
		}
Exemplo n.º 25
0
        public override void Defragment(IDefragmentContext context)
        {
            var sourceAddress = context.SourceBuffer().ReadInt();
            var length        = context.SourceBuffer().ReadInt();

            if (sourceAddress == 0 && length == 0)
            {
                context.TargetBuffer().WriteInt(0);
                context.TargetBuffer().WriteInt(0);
                return;
            }
            var targetAddress = 0;

            try
            {
                targetAddress = context.CopySlotToNewMapped(sourceAddress, length);
            }
            catch (IOException exc)
            {
                throw new Db4oIOException(exc);
            }
            context.TargetBuffer().WriteInt(targetAddress);
            context.TargetBuffer().WriteInt(length);
        }
Exemplo n.º 26
0
 private int CopyDependentSlot(IDefragmentContext context, int sourceId)
 {
     try
     {
         ByteArrayBuffer sourceBuffer      = context.SourceBufferById(sourceId);
         Slot            targetPayloadSlot = context.AllocateTargetSlot(sourceBuffer.Length());
         int             targetId          = context.Services().TargetNewId();
         context.Services().MapIDs(sourceId, targetId, false);
         context.Services().Mapping().MapId(targetId, targetPayloadSlot);
         DefragmentContextImpl payloadContext = new DefragmentContextImpl(sourceBuffer, (DefragmentContextImpl
                                                                                         )context);
         int           clazzId                 = payloadContext.CopyIDReturnOriginalID();
         ITypeHandler4 payloadHandler          = payloadContext.TypeHandlerForId(clazzId);
         ITypeHandler4 versionedPayloadHandler = HandlerRegistry.CorrectHandlerVersion(payloadContext
                                                                                       , payloadHandler);
         versionedPayloadHandler.Defragment(payloadContext);
         payloadContext.WriteToTarget(targetPayloadSlot.Address());
         return(targetId);
     }
     catch (IOException ioexc)
     {
         throw new Db4oIOException(ioexc);
     }
 }
 public override void DefragAspect(IDefragmentContext context)
 {
     throw new InvalidOperationException("Type handler for '" + ContainingClass() + "' could not be found. Defragment cannot proceed. "
                                         + " Please ensure all required types are available and try again.");
 }
Exemplo n.º 28
0
 private static void DefragmentElementHandlerId(IDefragmentContext context)
 {
     int offset = context.Offset();
     context.CopyID();
     context.Seek(offset);
 }
Exemplo n.º 29
0
 public _MarshallingInfoTraverseAspectCommand_35(IDefragmentContext context, IMarshallingInfo
     baseArg1) : base(baseArg1)
 {
     this.context = context;
 }
Exemplo n.º 30
0
 public virtual void Defragment(IDefragmentContext context)
 {
     context.IncrementOffset(LinkLength());
 }
Exemplo n.º 31
0
		private static void IncrementOffset(IDefragmentContext context)
		{
			context.IncrementOffset(GuidSize);
		}
Exemplo n.º 32
0
 public virtual void Defragment(IDefragmentContext context)
 {
     CorrectHandlerVersion(context).Defragment(context);
 }
Exemplo n.º 33
0
		private Db4objects.Db4o.Internal.ClassMetadata ClassMetadata(IDefragmentContext context
			, ArrayInfo info)
		{
			int classMetadataId = ClassIDFromInfo(Container(context), info);
			return Container(context).ClassMetadataForID(classMetadataId);
		}
Exemplo n.º 34
0
		private ITypeHandler4 CorrectHandlerVersion(IDefragmentContext context, ITypeHandler4
			 handler, ArrayInfo info)
		{
			Db4objects.Db4o.Internal.ClassMetadata classMetadata = ClassMetadata(context, info
				);
			return HandlerRegistry.CorrectHandlerVersion(context, handler, classMetadata);
		}
Exemplo n.º 35
0
 public override void DefragAspect(IDefragmentContext context)
 {
     throw new InvalidOperationException("Type handler for '" + ContainingClass() +
                                         "' could not be found. Defragment cannot proceed. "
                                         + " Please ensure all required types are available and try again.");
 }
Exemplo n.º 36
0
 void ITypeHandler4.Defragment(IDefragmentContext context)
 {
     IncrementOffset(context);
 }
Exemplo n.º 37
0
		public abstract void DefragAspect(IDefragmentContext context);
Exemplo n.º 38
0
 public void Defragment(IDefragmentContext context)
 {
     context.IncrementOffset(LinkLength());
 }
Exemplo n.º 39
0
 public virtual void Defragment(IDefragmentContext context)
 {
     TraverseAllAspects(context, new _MarshallingInfoTraverseAspectCommand_35(context,
         EnsureFieldList(context)));
 }
 public virtual void Defragment(IDefragmentContext context)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 41
0
		public virtual void Defragment(IDefragmentContext context)
		{
		}
Exemplo n.º 42
0
		private void DefragmentWriteMappedClassId(IDefragmentContext context, ArrayInfo info
			, int classIdOffset)
		{
			ByteArrayBuffer targetBuffer = context.TargetBuffer();
			int currentOffset = targetBuffer.Offset();
			targetBuffer.Seek(classIdOffset);
			int classID = ClassIDFromInfo(Container(context), info);
			int mappedID = context.MappedID(classID);
			int marshalledMappedId = ClassIdToMarshalledClassId(mappedID, info.Primitive());
			targetBuffer.WriteInt(marshalledMappedId);
			targetBuffer.Seek(currentOffset);
		}
 public virtual void Defragment(IDefragmentContext context)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 44
0
		private int CopyDependentSlot(IDefragmentContext context, int sourceId)
		{
			try
			{
				ByteArrayBuffer sourceBuffer = context.SourceBufferById(sourceId);
				Slot targetPayloadSlot = context.AllocateTargetSlot(sourceBuffer.Length());
				int targetId = context.Services().TargetNewId();
				context.Services().MapIDs(sourceId, targetId, false);
				context.Services().Mapping().MapId(targetId, targetPayloadSlot);
				DefragmentContextImpl payloadContext = new DefragmentContextImpl(sourceBuffer, (DefragmentContextImpl
					)context);
				int clazzId = payloadContext.CopyIDReturnOriginalID();
				ITypeHandler4 payloadHandler = payloadContext.TypeHandlerForId(clazzId);
				ITypeHandler4 versionedPayloadHandler = HandlerRegistry.CorrectHandlerVersion(payloadContext
					, payloadHandler);
				versionedPayloadHandler.Defragment(payloadContext);
				payloadContext.WriteToTarget(targetPayloadSlot.Address());
				return targetId;
			}
			catch (IOException ioexc)
			{
				throw new Db4oIOException(ioexc);
			}
		}
Exemplo n.º 45
0
 	public void Defragment(IDefragmentContext context)
     {
         IncrementOffset(context);
     }
Exemplo n.º 46
0
		protected virtual ITypeHandler4 CorrectTypeHandlerVersionFor(IDefragmentContext context
			, int classMetadataId)
		{
			ITypeHandler4 typeHandler = context.TypeHandlerForId(classMetadataId);
			if (null == typeHandler)
			{
				return null;
			}
			ClassMetadata classMetadata = Container(context).ClassMetadataForID(classMetadataId
				);
			return HandlerRegistry.CorrectHandlerVersion(context, typeHandler, classMetadata);
		}
Exemplo n.º 47
0
 private static void IncrementOffset(IDefragmentContext context)
 {
     context.IncrementOffset(LinkLength());
 }
Exemplo n.º 48
0
 public override void Defragment(IDefragmentContext context)
 {
     Defragment(context, this);
 }
Exemplo n.º 49
0
		public void Defragment(IDefragmentContext context)
		{
			context.Defragment(TypeHandler());
		}
Exemplo n.º 50
0
 public void Defragment(IDefragmentContext context)
 {
     context.Defragment(TypeHandler());
 }
Exemplo n.º 51
0
		public virtual void Defragment(IDefragmentContext context)
		{
			int payLoadOffSet = context.ReadInt();
			if (payLoadOffSet == 0)
			{
				return;
			}
			int savedOffSet = context.Offset();
			context.Seek(payLoadOffSet);
			try
			{
				int classMetadataId = context.CopyIDReturnOriginalID();
				ITypeHandler4 typeHandler = CorrectTypeHandlerVersionFor(context, classMetadataId
					);
				if (typeHandler == null)
				{
					return;
				}
				SeekSecondaryOffset(context, typeHandler);
				if (IsPlainObject(typeHandler))
				{
					context.Defragment(new PlainObjectHandler());
				}
				else
				{
					context.Defragment(typeHandler);
				}
			}
			finally
			{
				context.Seek(savedOffSet);
			}
		}
Exemplo n.º 52
0
 public virtual void Defragment(IDefragmentContext context)
 {
 }
Exemplo n.º 53
0
		protected virtual ObjectContainerBase Container(IDefragmentContext context)
		{
			return context.Transaction().Container();
		}
Exemplo n.º 54
0
 public virtual void Defragment(IDefragmentContext context)
 {
     DefragmentElementHandlerId(context);
     ReadArrayHandler(context).Defragment(context);
 }
 public override void Defragment(IDefragmentContext context)
 {
     ArrayHandler0.Defragment(context, this);
 }
Exemplo n.º 56
0
		public virtual void Defragment(IDefragmentContext context)
		{
			KeyValueHandlerPair handlers = ReadKeyValueTypeHandlers(context, context);
			int elementCount = context.ReadInt();
			for (int i = elementCount; i > 0; i--)
			{
				context.Defragment(handlers._keyHandler);
				context.Defragment(handlers._valueHandler);
			}
		}
Exemplo n.º 57
0
		public virtual void Defragment(IDefragmentContext context)
		{
			if (context.ClassMetadata().HasIdentity())
			{
				DefragmentSlot(context);
			}
			else
			{
				context.IncrementOffset(LinkLength());
			}
		}
		public virtual void Defragment(IDefragmentContext context)
		{
			StringHandler(context).Defragment(context);
		}
Exemplo n.º 59
0
 protected virtual ObjectContainerBase Container(IDefragmentContext context)
 {
     return(context.Transaction().Container());
 }
Exemplo n.º 60
0
		public void DefragmentSlot(IDefragmentContext context)
		{
			if (IsUntypedByteArray(context))
			{
				return;
			}
			int classIdOffset = context.TargetBuffer().Offset();
			ArrayInfo info = NewArrayInfo();
			ReadInfo(context.Transaction(), context, info);
			DefragmentWriteMappedClassId(context, info, classIdOffset);
			int elementCount = info.ElementCount();
			if (HasNullBitmap(info))
			{
				BitMap4 bitMap = ReadNullBitmap(context, elementCount);
				elementCount -= ReducedCountForNullBitMap(elementCount, bitMap);
			}
			ITypeHandler4 correctTypeHandlerVersion = CorrectHandlerVersion(context, _handler
				, info);
			for (int i = 0; i < elementCount; i++)
			{
				context.Defragment(correctTypeHandlerVersion);
			}
		}