コード例 #1
0
ファイル: StringHandler.cs プロジェクト: masroore/db4o
 /// <summary>This readIndexEntry method reads from the parent slot.</summary>
 /// <remarks>This readIndexEntry method reads from the parent slot.</remarks>
 /// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
 /// <exception cref="Db4objects.Db4o.Ext.Db4oIOException"></exception>
 public virtual object ReadIndexEntryFromObjectSlot(MarshallerFamily mf, StatefulBuffer
     buffer)
 {
     var payLoadOffSet = buffer.ReadInt();
     var length = buffer.ReadInt();
     if (payLoadOffSet == 0)
     {
         return null;
     }
     return buffer.ReadPayloadWriter(payLoadOffSet, length);
 }
コード例 #2
0
ファイル: ObjectHeader.cs プロジェクト: Galigator/db4o
		private ObjectHeader(ObjectContainerBase container, Db4objects.Db4o.Internal.ClassMetadata
			 classMetadata, IReadWriteBuffer reader)
		{
			int classID = reader.ReadInt();
			_marshallerFamily = ReadMarshallerFamily(reader, classID);
			classID = NormalizeID(classID);
			_classMetadata = (classMetadata != null ? classMetadata : container.ClassMetadataForID
				(classID));
			// This check has been added to cope with defragment in debug mode: SlotDefragment#setIdentity()
			// will trigger calling this constructor with a source db class metadata and a target db stream,
			// thus _classMetadata==null. There may be a better solution, since this call is just meant to
			// skip the object header.
			_headerAttributes = SlotFormat().ReadHeaderAttributes((ByteArrayBuffer)reader);
		}
コード例 #3
0
        public static MarshallerFamily ForConverterVersion(int n)
        {
            MarshallerFamily result = allVersions[0];

            for (int i = 1; i < allVersions.Length; i++)
            {
                if (allVersions[i]._converterVersion > n)
                {
                    return(result);
                }
                result = allVersions[i];
            }
            return(result);
        }
コード例 #4
0
        private MarshallerFamily ReadMarshallerFamily(IReadWriteBuffer reader, int classID
                                                      )
        {
            bool marshallerAware = MarshallerAware(classID);

            _handlerVersion = 0;
            if (marshallerAware)
            {
                _handlerVersion = reader.ReadByte();
            }
            MarshallerFamily marshallerFamily = MarshallerFamily.Version(_handlerVersion);

            return(marshallerFamily);
        }
コード例 #5
0
ファイル: MarshallerFamily.cs プロジェクト: pondyond/db4o
 static MarshallerFamily()
 {
     allVersions    = new MarshallerFamily[HandlerRegistry.HandlerVersion + 1];
     allVersions[0] = new MarshallerFamily(0, 0, new ClassMarshaller0(), new FieldMarshaller0
                                               (), new PrimitiveMarshaller0());
     // LEGACY => before 5.4
     allVersions[1] = new MarshallerFamily(ClassIndexesToBTrees_5_5.Version, 1, new ClassMarshaller1
                                               (), new FieldMarshaller0(), new PrimitiveMarshaller1());
     allVersions[2] = new MarshallerFamily(FieldIndexesToBTrees_5_7.Version, 2, new ClassMarshaller2
                                               (), new FieldMarshaller1(), new PrimitiveMarshaller1());
     for (var i = 3; i < allVersions.Length; i++)
     {
         allVersions[i] = LatestFamily(i);
     }
 }
コード例 #6
0
ファイル: MarshallerFamily.cs プロジェクト: erdincay/db4o
		static MarshallerFamily()
		{
			allVersions = new MarshallerFamily[HandlerRegistry.HandlerVersion + 1];
			allVersions[0] = new MarshallerFamily(0, 0, new ClassMarshaller0(), new FieldMarshaller0
				(), new PrimitiveMarshaller0());
			// LEGACY => before 5.4
			allVersions[1] = new MarshallerFamily(ClassIndexesToBTrees_5_5.Version, 1, new ClassMarshaller1
				(), new FieldMarshaller0(), new PrimitiveMarshaller1());
			allVersions[2] = new MarshallerFamily(FieldIndexesToBTrees_5_7.Version, 2, new ClassMarshaller2
				(), new FieldMarshaller1(), new PrimitiveMarshaller1());
			for (int i = 3; i < allVersions.Length; i++)
			{
				allVersions[i] = LatestFamily(i);
			}
		}
コード例 #7
0
        private ObjectHeader(ObjectContainerBase container, Db4objects.Db4o.Internal.ClassMetadata
                             classMetadata, IReadWriteBuffer reader)
        {
            int classID = reader.ReadInt();

            _marshallerFamily = ReadMarshallerFamily(reader, classID);
            classID           = NormalizeID(classID);
            _classMetadata    = (classMetadata != null ? classMetadata : container.ClassMetadataForID
                                     (classID));
            // This check has been added to cope with defragment in debug mode: SlotDefragment#setIdentity()
            // will trigger calling this constructor with a source db class metadata and a target db stream,
            // thus _classMetadata==null. There may be a better solution, since this call is just meant to
            // skip the object header.
            _headerAttributes = SlotFormat().ReadHeaderAttributes((ByteArrayBuffer)reader);
        }
コード例 #8
0
ファイル: ShortHandler.cs プロジェクト: masroore/db4o
 /// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
 public override object Read(MarshallerFamily mf, StatefulBuffer buffer, bool redirect
     )
 {
     return mf._primitive.ReadShort(buffer);
 }
コード例 #9
0
 	public object ReadIndexEntryFromObjectSlot(MarshallerFamily mf, StatefulBuffer buffer)
 	{
 		return ReadFrom(buffer);
 	}
コード例 #10
0
 /// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
 public object ReadIndexEntryFromObjectSlot(MarshallerFamily mf, StatefulBuffer statefulBuffer
     )
 {
     return ReadIndexEntry(statefulBuffer.Transaction().Context(), statefulBuffer);
 }
コード例 #11
0
ファイル: IntHandler.cs プロジェクト: Galigator/db4o
		/// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
		public override object Read(MarshallerFamily mf, StatefulBuffer writer, bool redirect
			)
		{
			return mf._primitive.ReadInteger(writer);
		}
コード例 #12
0
		/// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
		/// <exception cref="Db4objects.Db4o.Ext.Db4oIOException"></exception>
		public override object ReadIndexEntryFromObjectSlot(MarshallerFamily mf, StatefulBuffer
			 buffer)
		{
			return buffer.Container().ReadWriterByAddress(buffer.Transaction(), buffer.ReadInt
				(), buffer.ReadInt());
		}
コード例 #13
0
		object IIndexableTypeHandler.ReadIndexEntryFromObjectSlot(MarshallerFamily mf, StatefulBuffer buffer)
		{
			return ReadFrom(buffer);
		}
コード例 #14
0
ファイル: EnumTypeHandler.cs プロジェクト: erdincay/db4o
 	public object ReadIndexEntryFromObjectSlot(MarshallerFamily mf, StatefulBuffer statefulBuffer)
 	{
 		return new IndexEntry(statefulBuffer.ReadInt(), statefulBuffer.ReadLong());
 	}
コード例 #15
0
		/// <param name="mf"></param>
		/// <param name="buffer"></param>
		/// <param name="redirect"></param>
		/// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
		public virtual object Read(MarshallerFamily mf, StatefulBuffer buffer, bool redirect
			)
		{
			return Read1(buffer);
		}
コード例 #16
0
		/// <exception cref="Db4objects.Db4o.CorruptionException"></exception>
		public object ReadIndexEntryFromObjectSlot(MarshallerFamily mf, StatefulBuffer statefulBuffer
			)
		{
			return Read(mf, statefulBuffer, true);
		}