Пример #1
0
        //      throw new IllegalStateException();
        public virtual void CollectIDs(QueryingReadContext readContext)
        {
            IInternalReadContext context = (IInternalReadContext)readContext;
            int payloadOffset            = context.ReadInt();

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

            try
            {
                ITypeHandler4 typeHandler = ReadTypeHandler(context, payloadOffset);
                if (typeHandler == null)
                {
                    return;
                }
                SeekSecondaryOffset(context, typeHandler);
                if (IsPlainObject(typeHandler))
                {
                    readContext.Collector().AddId(readContext.ReadInt());
                    return;
                }
                CollectIdContext collectIdContext = new _CollectIdContext_203(readContext, readContext
                                                                              .Transaction(), readContext.Collector(), null, readContext.Buffer());
                Handlers4.CollectIdsInternal(collectIdContext, context.Container().Handlers.CorrectHandlerVersion
                                                 (typeHandler, context.HandlerVersion()), 0, false);
            }
            finally
            {
                context.Seek(savedOffSet);
            }
        }
Пример #2
0
        /// <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);
        }