/// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
        /// <exception cref="Db4objects.Db4o.Ext.Db4oIOException"></exception>
        public object ReadIndexEntry(IObjectIdContext context)
        {
            IIndexableTypeHandler indexableTypeHandler = (IIndexableTypeHandler)HandlerRegistry
                                                         .CorrectHandlerVersion(context, GetHandler());

            return(indexableTypeHandler.ReadIndexEntry(context));
        }
Exemple #2
0
        protected virtual ITypeHandler4 ReadTypeHandler(IInternalReadContext context, int
                                                        payloadOffset)
        {
            context.Seek(payloadOffset);
            ITypeHandler4 typeHandler = Container().TypeHandlerForClassMetadataID(context.ReadInt
                                                                                      ());

            return(HandlerRegistry.CorrectHandlerVersion(context, typeHandler));
        }
        /// <exception cref="Db4objects.Db4o.Internal.FieldIndexException"></exception>
        public sealed override void CollectIDs(CollectIdContext context)
        {
            if (!Alive())
            {
                IncrementOffset(context.Buffer(), context);
                return;
            }
            ITypeHandler4 handler = HandlerRegistry.CorrectHandlerVersion(context, GetHandler
                                                                              ());

            Handlers4.CollectIdsInternal(context, handler, LinkLength(context), true);
        }
Exemple #4
0
        public static ITypeHandler4 ArrayElementHandler(ITypeHandler4 handler, QueryingReadContext
                                                        queryingReadContext)
        {
            if (!(handler is ICascadingTypeHandler))
            {
                return(null);
            }
            var cascadingHandler = (ICascadingTypeHandler)HandlerRegistry.CorrectHandlerVersion
                                       (queryingReadContext, handler);

            return(HandlerRegistry.CorrectHandlerVersion(queryingReadContext, cascadingHandler
                                                         .ReadCandidateHandler(queryingReadContext)));
        }
        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));
        }
Exemple #6
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));
        }
        public void Defragment(ITypeHandler4 handler)
        {
            ITypeHandler4 typeHandler = HandlerRegistry.CorrectHandlerVersion(this, handler);

            if (Handlers4.UseDedicatedSlot(this, typeHandler))
            {
                if (Handlers4.HasClassIndex(typeHandler))
                {
                    CopyID();
                }
                else
                {
                    CopyUnindexedID();
                }
                return;
            }
            typeHandler.Defragment(this);
        }
 public virtual ITypeHandler4 CorrectHandlerVersion(ITypeHandler4 typeHandler)
 {
     return(handlerRegistry.CorrectHandlerVersion(typeHandler, version));
 }
 private int CalculateLinkLength(IHandlerVersionContext context)
 {
     return(Handlers4.CalculateLinkLength(HandlerRegistry.CorrectHandlerVersion(context
                                                                                , GetHandler())));
 }