public static void SaveImpl(IWriterCtx writerCtx, object obj) { var ind = obj as DBIndirect <T>; if (ind != null) { if (ind._transaction != null) { if (((IDBWriterCtx)writerCtx).GetTransaction() != ind._transaction) { throw new BTDBException("Transaction does not match when saving nonmaterialized IIndirect"); } writerCtx.Writer().WriteVInt64((long)ind._oid); return; } } var ind2 = obj as IIndirect <T>; if (ind2 != null) { writerCtx.WriteNativeObjectPreventInline(ind2.Value); return; } writerCtx.WriteNativeObjectPreventInline(obj); }
ReadOnlySpan <byte> ValueToByteArray(TValue value, ref SpanWriter writer) { IWriterCtx ctx = null; if (_valueHandler.NeedsCtx()) { ctx = new DBWriterCtx(_tr); } _valueWriter(value, ref writer, ctx); return(writer.GetPersistentSpanAndReset()); }
public void WriteInlineObject(object @object, IWriterCtx writerCtx) { var ti = GetTableInfoFromType(@object.GetType()); EnsureClientTypeNotNull(ti); IfNeededPersistTableInfo(ti); var writer = writerCtx.Writer(); writer.WriteVUInt32(ti.Id); writer.WriteVUInt32(ti.ClientTypeVersion); ti.Saver(this, null, writer, @object); }
ByteBuffer KeyToByteArray(TKey key) { var writer = new ByteBufferWriter(); IWriterCtx ctx = null; if (_keyHandler.NeedsCtx()) { ctx = new DBWriterCtx(_tr, writer); } _keyWriter(key, writer, ctx); return(writer.Data); }
ReadOnlySpan <byte> KeyToByteArray(TKey key, ref SpanWriter writer) { writer.WriteBlock(_prefix); IWriterCtx ctx = null; if (_keyHandler.NeedsCtx()) { ctx = new DBWriterCtx(_tr); } _keyWriter(key, ref writer, ctx); return(writer.GetPersistentSpanAndReset()); }
ReadOnlySpan <byte> ValueToByteArray(TValue value) { var writer = new SpanWriter(); IWriterCtx ctx = null; if (_valueHandler.NeedsCtx()) { ctx = new DBWriterCtx(_tr); } _valueWriter(value, ref writer, ctx); return(writer.GetSpan()); }
ByteBuffer ValueToByteArray(TValue value) { var writer = new ByteBufferWriter(); IWriterCtx ctx = null; if (_valueHandler.NeedsCtx()) { ctx = new DBWriterCtx(_tr, writer); } _valueWriter(value, writer, ctx); return(writer.Data); }
ReadOnlySpan <byte> KeyToByteArray(TKey key) { var writer = new SpanWriter(); IWriterCtx ctx = null; if (_keyHandler.NeedsCtx()) { ctx = new DBWriterCtx(_tr); } writer.WriteBlock(_prefix); _keyWriter(key, ref writer, ctx); return(writer.GetSpan()); }
// ReSharper disable once UnusedMember.Global public static void DoSave(IWriterCtx ctx, IOrderedSet <TKey>?dictionary, int cfgId) { var writerCtx = (IDBWriterCtx)ctx; if (!(dictionary is ODBSet <TKey> goodDict)) { var tr = writerCtx.GetTransaction(); var id = tr.AllocateDictionaryId(); goodDict = new ODBSet <TKey>(tr, (ODBDictionaryConfiguration)writerCtx.FindInstance(cfgId), id); if (dictionary != null) { foreach (var pair in dictionary) { goodDict.Add(pair); } } } ctx.Writer().WriteVUInt64(goodDict._id); }
public static void DoSave(ref SpanWriter writer, IWriterCtx ctx, IDictionary <TKey, TValue>?dictionary, int cfgId) { var writerCtx = (IDBWriterCtx)ctx; if (!(dictionary is ODBDictionary <TKey, TValue> goodDict)) { var tr = writerCtx.GetTransaction(); var id = tr.AllocateDictionaryId(); goodDict = new ODBDictionary <TKey, TValue>(tr, ODBDictionaryConfiguration.Get(cfgId), id); if (dictionary != null) { foreach (var pair in dictionary) { goodDict.Add(pair.Key, pair.Value); } } } writer.WriteVUInt64(goodDict._id); }
public static void DoSave(IWriterCtx ctx, IDictionary <TKey, TValue> dictionary, int cfgId) { var dbctx = (IDBWriterCtx)ctx; var goodDict = dictionary as ODBDictionary <TKey, TValue>; if (goodDict == null) { var tr = dbctx.GetTransaction(); var id = tr.AllocateDictionaryId(); goodDict = new ODBDictionary <TKey, TValue>(tr, (ODBDictionaryConfiguration)dbctx.FindInstance(cfgId), id); if (dictionary != null) { foreach (var pair in dictionary) { goodDict.Add(pair.Key, pair.Value); } } } ctx.Writer().WriteVUInt64(goodDict._id); }
public static void SaveImpl(ref SpanWriter writer, IWriterCtx writerCtx, object obj) { if (obj is DBIndirect <T> ind) { if (ind._transaction != null) { if (((IDBWriterCtx)writerCtx).GetTransaction() != ind._transaction) { throw new BTDBException("Transaction does not match when saving nonmaterialized IIndirect"); } writer.WriteVInt64((long)ind._oid); return; } } if (obj is IIndirect <T> ind2) { writerCtx.WriteNativeObjectPreventInline(ref writer, ind2.Value); return; } writerCtx.WriteNativeObjectPreventInline(ref writer, obj); }