Пример #1
0
        /// <summary>
        /// Serializes a data document instance into a Subarray&lt;byte&gt; 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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
 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);
     }
 }
Пример #5
0
 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);
     }
 }
Пример #6
0
 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);
     }
 }
Пример #7
0
        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());
            }
        }
Пример #8
0
        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());
                }
            }
        }
Пример #9
0
 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);
         }
     }
 }
Пример #10
0
        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);
        }
Пример #11
0
 public static void Write(WritingStreamer streamer, ulong name, NFX.ApplicationModel.Pile.PilePointer value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.PilePointer);
     streamer.Write(value);
 }
Пример #12
0
        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);
            }
        }
Пример #13
0
 public static void Write(WritingStreamer streamer, ulong name, FID value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.FID);
     streamer.Write(value);
 }
Пример #14
0
 public static void WriteEORow(WritingStreamer streamer)
 {
     streamer.Write((ulong)0x00);//null name
 }
Пример #15
0
 public static void Write(WritingStreamer streamer, ulong name, NFX.DataAccess.Distributed.GDID value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.GDID);
     streamer.Write(value);
 }
Пример #16
0
 public static void WriteNull(WritingStreamer streamer, ulong name)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Null);
 }
Пример #17
0
 public static void Write(WritingStreamer streamer, ulong name, ushort value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.UInt16);
     streamer.Write(value);
 }
Пример #18
0
 public static void Write(WritingStreamer streamer, ulong name, TimeSpan value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.TimeSpan);
     streamer.Write(value);
 }
Пример #19
0
 public static void WriteHeader(WritingStreamer streamer)
 {
     streamer.Write((byte)0xC0);
     streamer.Write((byte)0xFE);
 }
Пример #20
0
 public static void Write(WritingStreamer streamer, ulong name, int value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Int32);
     streamer.Write(value);
 }
Пример #21
0
 public static void Write(WritingStreamer streamer, ulong name, NFX.Serialization.JSON.NLSMap value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.NLSMap);
     streamer.Write(value);
 }
Пример #22
0
        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);
            }
        }
Пример #23
0
 public static void Write(WritingStreamer streamer, ulong name, byte[] value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.ByteArray);
     streamer.Write(value);
 }
Пример #24
0
 public static void Write(WritingStreamer streamer, ulong name, bool value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Boolean);
     streamer.Write(value);
 }
Пример #25
0
 public static void WriteRow(WritingStreamer streamer, ulong name, TypedRow row)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Row);
     ArowSerializer.Serialize(row, streamer, false);
 }
Пример #26
0
 public static void Write(WritingStreamer streamer, ulong name, float value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Single);
     streamer.Write(value);
 }
Пример #27
0
 public static void Write(WritingStreamer streamer, ulong name, Financial.Amount value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Amount);
     streamer.Write(value);
 }
Пример #28
0
 public static void Write(WritingStreamer streamer, ulong name, decimal value)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Decimal);
     streamer.Write(value);
 }
Пример #29
0
 public static void WriteRow(WritingStreamer streamer, ulong name, TypedDoc doc)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Doc);
     ArowSerializer.Serialize(doc, streamer, false);
 }