コード例 #1
0
ファイル: OpenTypeHandler.cs プロジェクト: masroore/db4o
 public virtual ITypeHandler4 ReadCandidateHandler(QueryingReadContext context)
 {
     var payLoadOffSet = context.ReadInt();
     if (payLoadOffSet == 0)
     {
         return null;
     }
     context.Seek(payLoadOffSet);
     var classMetadataID = context.ReadInt();
     var classMetadata = context.Container().ClassMetadataForID(classMetadataID
         );
     if (classMetadata == null)
     {
         return null;
     }
     return classMetadata.ReadCandidateHandler(context);
 }
コード例 #2
0
 public virtual void CollectIDs(QueryingReadContext context)
 {
     var elementHandler = ReadElementTypeHandler(context, context);
     var elementCount = context.ReadInt();
     for (var i = 0; i < elementCount; i++)
     {
         context.ReadId(elementHandler);
     }
 }
コード例 #3
0
ファイル: MapTypeHandler.cs プロジェクト: masroore/db4o
 public virtual void CollectIDs(QueryingReadContext context)
 {
     var handlers = ReadKeyValueTypeHandlers(context, context);
     var elementCount = context.ReadInt();
     for (var i = 0; i < elementCount; i++)
     {
         context.ReadId(handlers._keyHandler);
         context.SkipId(handlers._valueHandler);
     }
 }
コード例 #4
0
ファイル: OpenTypeHandler0.cs プロジェクト: Galigator/db4o
		public override ITypeHandler4 ReadCandidateHandler(QueryingReadContext context)
		{
			int id = 0;
			int offset = context.Offset();
			try
			{
				id = context.ReadInt();
			}
			catch (Exception)
			{
			}
			context.Seek(offset);
			if (id != 0)
			{
				StatefulBuffer reader = context.Container().ReadStatefulBufferById(context.Transaction
					(), id);
				if (reader != null)
				{
					ObjectHeader oh = new ObjectHeader(context.Container(), reader);
					try
					{
						if (oh.ClassMetadata() != null)
						{
							context.Buffer(reader);
							return oh.ClassMetadata().SeekCandidateHandler(context);
						}
					}
					catch (Exception e)
					{
					}
				}
			}
			// TODO: Check Exception Types
			// Errors typically occur, if classes don't match
			return null;
		}
コード例 #5
0
ファイル: OpenTypeHandler.cs プロジェクト: Galigator/db4o
		//    	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);
			}
		}
コード例 #6
0
ファイル: BigSetTypeHandler.cs プロジェクト: superyfwy/db4o
		// TODO Auto-generated method stub
		public virtual void CollectIDs(QueryingReadContext context)
		{
			int id = context.ReadInt();
			BTree bTree = NewBTree(context, id);
			bTree.TraverseKeys(context.Transaction(), new _IVisitor4_83(context));
		}