/// <summary> /// Serializes a data document instance into a Subarray<byte> delimited chunk of thread-local buffer. /// Because sub-arrays are used for thread-local optimizations, this method should be used in a synchronous-only /// thread-bound flows, such as serializing payload into Pile and the returned object must be consumed right away as subsequent calls /// to this method will overwrite the previous content as the same thread local physical buffer is re-used. /// </summary> public static Subarray <byte> SerializeToSubarray(TypedDoc doc) { var stream = ts_WriteStream; var writer = ts_Writer; var result = ts_Subarray; if (stream == null) { stream = new MemoryStream(INITIAL_BUFFER_CAPACITY); writer = SlimFormat.Instance.GetWritingStreamer(); writer.BindStream(stream); result = new Subarray <byte>(); ts_WriteStream = stream; ts_Writer = writer; ts_Subarray = result; } stream.Position = 0; Serialize(doc, writer, true); result.Set(stream.GetBuffer(), (int)stream.Position); //don't let large hunk dangling in the TLS if (stream.Capacity > BUFFER_TRIM_CAPACITY) { stream.SetLength(0); stream.Capacity = INITIAL_BUFFER_CAPACITY; } return(result); }
public static void Serialize(TypedDoc doc, WritingStreamer streamer, bool header = true) { ITypeSerializationCore core; var tRow = doc.GetType(); if (!s_Serializers.TryGetValue(tRow, out core)) { throw new ArowException(StringConsts.AROW_TYPE_NOT_SUPPORTED_ERROR.Args(tRow.FullName)); } var ar = doc as IAmorphousData; if (ar != null) { if (ar.AmorphousDataEnabled) { ar.BeforeSave(AROW_TARGET); } } //1 Header if (header) { Writer.WriteHeader(streamer); } //2 Body core.Serialize(doc, streamer); //3 EORow Writer.WriteEORow(streamer); }
public static void Write(WritingStreamer streamer, ulong name, IEnumerable <NFX.Serialization.JSON.NLSMap> array) { streamer.Write(name); streamer.Write((byte)DataType.Array); streamer.Write((byte)DataType.NLSMap); streamer.Write(array.Count()); foreach (var e in array) { streamer.Write(e); } }
public static void Write(WritingStreamer streamer, ulong name, IEnumerable <NFX.DataAccess.Distributed.GDID> array) { streamer.Write(name); streamer.Write((byte)DataType.Array); streamer.Write((byte)DataType.GDID); streamer.Write(array.Count()); foreach (var e in array) { streamer.Write(e); } }
public static void Write(WritingStreamer streamer, ulong name, IEnumerable <FID> array) { streamer.Write(name); streamer.Write((byte)DataType.Array); streamer.Write((byte)DataType.FID); streamer.Write(array.Count()); foreach (var e in array) { streamer.Write(e); } }
public static void Write(WritingStreamer streamer, ulong name, IEnumerable <NFX.ApplicationModel.Pile.PilePointer> array) { streamer.Write(name); streamer.Write((byte)DataType.Array); streamer.Write((byte)DataType.PilePointer); streamer.Write(array.Count()); foreach (var e in array) { streamer.Write(e); } }
public static void WriteObject(WritingStreamer streamer, ulong name, object obj) { streamer.Write(name); streamer.Write((byte)DataType.POD); var ser = new Slim.PODSlimSerializer(); using (var ms = new MemoryStream()) { ser.Serialize(ms, obj); streamer.Write(ms.ToArray()); } }
public static void WriteObjectArray(WritingStreamer streamer, ulong name, IEnumerable <object> array) { streamer.Write(name); streamer.Write((byte)DataType.Array); streamer.Write((byte)DataType.POD); streamer.Write(array.Count()); var ser = new Slim.PODSlimSerializer(); foreach (var obj in array) { using (var ms = new MemoryStream()) { ser.Serialize(ms, obj); streamer.Write(ms.ToArray()); } } }
public static void WriteRowArray(WritingStreamer streamer, ulong name, IEnumerable <TypedRow> array) { streamer.Write(name); streamer.Write((byte)DataType.Array); streamer.Write((byte)DataType.Row); streamer.Write(array.Count()); foreach (var row in array) { if (row == null) { streamer.Write(false); } else { streamer.Write(true); ArowSerializer.Serialize(row, streamer, false); } } }
public static void Serialize(TypedRow row, WritingStreamer streamer, bool header = true) { ITypeSerializationCore core; var tRow = row.GetType(); if (!s_Serializers.TryGetValue(tRow, out core)) { throw new ArowException(StringConsts.AROW_TYPE_NOT_SUPPORTED_ERROR.Args(tRow.FullName)); } //1 Header if (header) { Writer.WriteHeader(streamer); } //2 Body core.Serialize(row, streamer); //3 EORow Writer.WriteEORow(streamer); }
public static void Write(WritingStreamer streamer, ulong name, NFX.ApplicationModel.Pile.PilePointer value) { streamer.Write(name); streamer.Write((byte)DataType.PilePointer); streamer.Write(value); }
void ITypeSerializationCore.Serialize(TypedDoc aDoc, WritingStreamer streamer) { var doc = (Azos.Log.Message)aDoc; // 'gdid' = 1684628583 AW.Write(streamer, 1684628583, doc.Gdid); // 'guid' = 1684632935 AW.Write(streamer, 1684632935, doc.Guid); // 'rel' = 7103858 AW.Write(streamer, 7103858, doc.RelatedTo); // 'app' = 7368801 AW.Write(streamer, 7368801, doc.App); // 'chnl' = 1819175011 AW.Write(streamer, 1819175011, doc.Channel); // 'tp' = 28788 Writer.Write(streamer, 28788, (int)doc.Type); // 'src' = 6517363 AW.Write(streamer, 6517363, doc.Source); // 'utc' = 6517877 AW.Write(streamer, 6517877, doc.UTCTimeStamp); // 'hst' = 7631720 if (doc.Host != null) { AW.Write(streamer, 7631720, doc.Host); } else { AW.WriteNull(streamer, 7631720); } // 'frm' = 7172710 if (doc.From != null) { AW.Write(streamer, 7172710, doc.From); } else { AW.WriteNull(streamer, 7172710); } // 'top' = 7368564 if (doc.Topic != null) { AW.Write(streamer, 7368564, doc.Topic); } else { AW.WriteNull(streamer, 7368564); } // 'txt' = 7633012 if (doc.Text != null) { AW.Write(streamer, 7633012, doc.Text); } else { AW.WriteNull(streamer, 7633012); } // 'par' = 7496048 if (doc.Parameters != null) { AW.Write(streamer, 7496048, doc.Parameters); } else { AW.WriteNull(streamer, 7496048); } // 'exc' = 6518885 if (doc.ExceptionData != null) { Writer.WriteRow(streamer, 6518885, doc.ExceptionData); } else { AW.WriteNull(streamer, 6518885); } // 'adims' = 495756862561 if (doc.ArchiveDimensions != null) { AW.Write(streamer, 495756862561, doc.ArchiveDimensions); } else { AW.WriteNull(streamer, 495756862561); } }
public static void Write(WritingStreamer streamer, ulong name, FID value) { streamer.Write(name); streamer.Write((byte)DataType.FID); streamer.Write(value); }
public static void WriteEORow(WritingStreamer streamer) { streamer.Write((ulong)0x00);//null name }
public static void Write(WritingStreamer streamer, ulong name, NFX.DataAccess.Distributed.GDID value) { streamer.Write(name); streamer.Write((byte)DataType.GDID); streamer.Write(value); }
public static void WriteNull(WritingStreamer streamer, ulong name) { streamer.Write(name); streamer.Write((byte)DataType.Null); }
public static void Write(WritingStreamer streamer, ulong name, ushort value) { streamer.Write(name); streamer.Write((byte)DataType.UInt16); streamer.Write(value); }
public static void Write(WritingStreamer streamer, ulong name, TimeSpan value) { streamer.Write(name); streamer.Write((byte)DataType.TimeSpan); streamer.Write(value); }
public static void WriteHeader(WritingStreamer streamer) { streamer.Write((byte)0xC0); streamer.Write((byte)0xFE); }
public static void Write(WritingStreamer streamer, ulong name, int value) { streamer.Write(name); streamer.Write((byte)DataType.Int32); streamer.Write(value); }
public static void Write(WritingStreamer streamer, ulong name, NFX.Serialization.JSON.NLSMap value) { streamer.Write(name); streamer.Write((byte)DataType.NLSMap); streamer.Write(value); }
void ITypeSerializationCore.Serialize(TypedDoc aDoc, WritingStreamer streamer) { var doc = (Azos.WrappedExceptionData)aDoc; // 'tpname' = 111520460468340 if (doc.TypeName != null) { AW.Write(streamer, 111520460468340, doc.TypeName); } else { AW.WriteNull(streamer, 111520460468340); } // 'msg' = 6779757 if (doc.Message != null) { AW.Write(streamer, 6779757, doc.Message); } else { AW.WriteNull(streamer, 6779757); } // 'code' = 1701080931 AW.Write(streamer, 1701080931, doc.Code); // 'src' = 6517363 if (doc.Source != null) { AW.Write(streamer, 6517363, doc.Source); } else { AW.WriteNull(streamer, 6517363); } // 'strace' = 111477511058547 if (doc.StackTrace != null) { AW.Write(streamer, 111477511058547, doc.StackTrace); } else { AW.WriteNull(streamer, 111477511058547); } // 'appname' = 28549237879894113 if (doc.AppName != null) { AW.Write(streamer, 28549237879894113, doc.AppName); } else { AW.WriteNull(streamer, 28549237879894113); } // 'inner' = 491328007785 if (doc.InnerException != null) { Writer.WriteRow(streamer, 491328007785, doc.InnerException); } else { AW.WriteNull(streamer, 491328007785); } }
public static void Write(WritingStreamer streamer, ulong name, byte[] value) { streamer.Write(name); streamer.Write((byte)DataType.ByteArray); streamer.Write(value); }
public static void Write(WritingStreamer streamer, ulong name, bool value) { streamer.Write(name); streamer.Write((byte)DataType.Boolean); streamer.Write(value); }
public static void WriteRow(WritingStreamer streamer, ulong name, TypedRow row) { streamer.Write(name); streamer.Write((byte)DataType.Row); ArowSerializer.Serialize(row, streamer, false); }
public static void Write(WritingStreamer streamer, ulong name, float value) { streamer.Write(name); streamer.Write((byte)DataType.Single); streamer.Write(value); }
public static void Write(WritingStreamer streamer, ulong name, Financial.Amount value) { streamer.Write(name); streamer.Write((byte)DataType.Amount); streamer.Write(value); }
public static void Write(WritingStreamer streamer, ulong name, decimal value) { streamer.Write(name); streamer.Write((byte)DataType.Decimal); streamer.Write(value); }
public static void WriteRow(WritingStreamer streamer, ulong name, TypedDoc doc) { streamer.Write(name); streamer.Write((byte)DataType.Doc); ArowSerializer.Serialize(doc, streamer, false); }