コード例 #1
0
        public virtual ObjectID ReadObjectID(IInternalReadContext context)
        {
            int payloadOffset = context.ReadInt();

            if (payloadOffset == 0)
            {
                return(ObjectID.IsNull);
            }
            int           savedOffset = context.Offset();
            ITypeHandler4 typeHandler = ReadTypeHandler(context, payloadOffset);

            if (typeHandler == null)
            {
                context.Seek(savedOffset);
                return(ObjectID.IsNull);
            }
            SeekSecondaryOffset(context, typeHandler);
            if (typeHandler is IReadsObjectIds)
            {
                ObjectID readObjectID = ((IReadsObjectIds)typeHandler).ReadObjectID(context);
                context.Seek(savedOffset);
                return(readObjectID);
            }
            context.Seek(savedOffset);
            return(ObjectID.NotPossible);
        }
コード例 #2
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);
            }
        }
コード例 #3
0
        // do nothing, no longer needed in current implementation.
        public virtual object Read(IReadContext readContext)
        {
            IInternalReadContext context = (IInternalReadContext)readContext;
            int payloadOffset            = context.ReadInt();

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

            try
            {
                ITypeHandler4 typeHandler = ReadTypeHandler(context, payloadOffset);
                if (typeHandler == null)
                {
                    return(null);
                }
                SeekSecondaryOffset(context, typeHandler);
                if (IsPlainObject(typeHandler))
                {
                    return(context.ReadAtCurrentSeekPosition(new PlainObjectHandler()));
                }
                return(context.ReadAtCurrentSeekPosition(typeHandler));
            }
            finally
            {
                context.Seek(savedOffSet);
            }
        }
コード例 #4
0
        protected virtual ITypeHandler4 ReadTypeHandler(IInternalReadContext context, int
                                                        payloadOffset)
        {
            context.Seek(payloadOffset);
            ITypeHandler4 typeHandler = Container().TypeHandlerForClassMetadataID(context.ReadInt
                                                                                      ());

            return(HandlerRegistry.CorrectHandlerVersion(context, typeHandler));
        }
コード例 #5
0
        public virtual ITypeHandler4 ReadTypeHandlerRestoreOffset(IInternalReadContext context
                                                                  )
        {
            int           savedOffset   = context.Offset();
            int           payloadOffset = context.ReadInt();
            ITypeHandler4 typeHandler   = payloadOffset == 0 ? null : ReadTypeHandler(context,
                                                                                      payloadOffset);

            context.Seek(savedOffset);
            return(typeHandler);
        }
コード例 #6
0
ファイル: OpenTypeHandler.cs プロジェクト: Galigator/db4o
		public virtual ITypeHandler4 ReadTypeHandlerRestoreOffset(IInternalReadContext context
			)
		{
			int savedOffset = context.Offset();
			int payloadOffset = context.ReadInt();
			ITypeHandler4 typeHandler = payloadOffset == 0 ? null : ReadTypeHandler(context, 
				payloadOffset);
			context.Seek(savedOffset);
			return typeHandler;
		}
コード例 #7
0
ファイル: OpenTypeHandler.cs プロジェクト: Galigator/db4o
		protected virtual ITypeHandler4 ReadTypeHandler(IInternalReadContext context, int
			 payloadOffset)
		{
			context.Seek(payloadOffset);
			ITypeHandler4 typeHandler = Container().TypeHandlerForClassMetadataID(context.ReadInt
				());
			return HandlerRegistry.CorrectHandlerVersion(context, typeHandler);
		}
コード例 #8
0
ファイル: OpenTypeHandler.cs プロジェクト: Galigator/db4o
		public virtual ObjectID ReadObjectID(IInternalReadContext context)
		{
			int payloadOffset = context.ReadInt();
			if (payloadOffset == 0)
			{
				return ObjectID.IsNull;
			}
			int savedOffset = context.Offset();
			ITypeHandler4 typeHandler = ReadTypeHandler(context, payloadOffset);
			if (typeHandler == null)
			{
				context.Seek(savedOffset);
				return ObjectID.IsNull;
			}
			SeekSecondaryOffset(context, typeHandler);
			if (typeHandler is IReadsObjectIds)
			{
				ObjectID readObjectID = ((IReadsObjectIds)typeHandler).ReadObjectID(context);
				context.Seek(savedOffset);
				return readObjectID;
			}
			context.Seek(savedOffset);
			return ObjectID.NotPossible;
		}