コード例 #1
0
ファイル: ObjectDBTransaction.cs プロジェクト: keeema/bbcore
        public bool FreeContentInNativeObject(IReaderCtx readerCtx)
        {
            var reader       = readerCtx.Reader();
            var tableId      = reader.ReadVUInt32();
            var tableVersion = reader.ReadVUInt32();
            var tableInfo    = _owner.TablesInfo.FindById(tableId);

            if (tableInfo == null)
            {
                throw new BTDBException($"Unknown TypeId {tableId} of inline object");
            }
            var freeContentTuple = tableInfo.GetFreeContent(tableVersion);
            var readerWithFree   = (DBReaderWithFreeInfoCtx)readerCtx;

            freeContentTuple.Item2(this, null, reader, readerWithFree.DictIds, readerWithFree.Oids);
            return(freeContentTuple.Item1);
        }
コード例 #2
0
ファイル: ObjectDBTransaction.cs プロジェクト: pavolpr/BTDB
        public object ReadInlineObject(IReaderCtx readerCtx)
        {
            var reader       = readerCtx.Reader();
            var tableId      = reader.ReadVUInt32();
            var tableVersion = reader.ReadVUInt32();
            var tableInfo    = _owner.TablesInfo.FindById(tableId);

            if (tableInfo == null)
            {
                throw new BTDBException($"Unknown TypeId {tableId} of inline object");
            }
            EnsureClientTypeNotNull(tableInfo);
            var obj = tableInfo.Creator(this, null);

            readerCtx.RegisterObject(obj);
            tableInfo.GetLoader(tableVersion)(this, null, reader, obj);
            readerCtx.ReadObjectDone();
            return(obj);
        }
コード例 #3
0
ファイル: DBIndirect.cs プロジェクト: saryn/BTDB
        public static IIndirect <T> LoadImpl(IReaderCtx readerCtx)
        {
            var oid = readerCtx.Reader().ReadVInt64();

            return(new DBIndirect <T>(((IDBReaderCtx)readerCtx).GetTransaction(), (ulong)oid));
        }