コード例 #1
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));
            }

            var ar = row as IAmorphousData;

            if (ar != null)
            {
                if (ar.AmorphousDataEnabled)
                {
                    ar.BeforeSave(AROW_TARGET);
                }
            }

            //1 Header
            if (header)
            {
                Writer.WriteHeader(streamer);
            }

            //2 Body
            core.Serialize(row, streamer);

            //3 EORow
            Writer.WriteEORow(streamer);
        }
コード例 #2
0
        public static bool TryDeserialize(TypedRow row, ReadingStreamer streamer, bool header = true)
        {
            ITypeSerializationCore core;
            var tRow = row.GetType();

            if (!s_Serializers.TryGetValue(tRow, out core))
            {
                return(false);
            }

            //1 Header
            if (header)
            {
                Reader.ReadHeader(streamer);
            }

            //2 Body
            core.Deserialize(row, streamer);

            var ar = row as IAmorphousData;

            if (ar != null)
            {
                if (ar.AmorphousDataEnabled)
                {
                    ar.AfterLoad(AROW_TARGET);
                }
            }

            return(true);
        }
コード例 #3
0
ファイル: Reader.cs プロジェクト: filmor/nfx
        public static object ConsumeUnmatched(TypedRow row, ReadingStreamer streamer, string name, DataType dt, DataType?atp)
        {
            object value = null;

            if (atp.HasValue)
            {
                var len = ReadArrayLength(streamer);
                var arr = new object[len];
                for (var i = 0; i < arr.Length; i++)
                {
                    arr[i] = readOneAsObject(streamer, dt);
                }
                value = arr;
            }
            else
            {
                value = readOneAsObject(streamer, dt);
            }

            var arow = row as IAmorphousData;

            if (arow == null)
            {
                return(value);
            }
            if (!arow.AmorphousDataEnabled)
            {
                return(value);
            }
            arow.AmorphousData[name] = value;
            return(value);
        }
コード例 #4
0
        public static void Deserialize(TypedRow row, ReadingStreamer streamer, bool header = true)
        {
            var ok = TryDeserialize(row, streamer, header);

            if (!ok)
            {
                throw new ArowException(StringConsts.AROW_TYPE_NOT_SUPPORTED_ERROR.Args(row.GetType().FullName));
            }
        }
コード例 #5
0
        public static object ConsumeUnmatched(TypedRow row, ReadingStreamer streamer, string name, DataType dt, DataType?atp)
        {
            object value = null;

            if (dt != DataType.Null)
            {
                if (dt == DataType.Array && !atp.HasValue)
                {
                    atp = Reader.ReadDataType(streamer);
                }

                if (atp.HasValue)
                {
                    var len = ReadArrayLength(streamer);
                    var arr = new object[len];
                    for (var i = 0; i < arr.Length; i++)
                    {
                        if (atp.Value == DataType.Row)
                        {
                            var has = streamer.ReadBool();
                            if (!has)
                            {
                                continue;
                            }
                        }
                        arr[i] = readOneAsObject(streamer, atp.Value);
                    }
                    value = arr;
                }
                else
                {
                    value = readOneAsObject(streamer, dt);
                }
            }
            var arow = row as IAmorphousData;

            if (arow == null)
            {
                return(value);
            }
            if (!arow.AmorphousDataEnabled)
            {
                return(value);
            }
            arow.AmorphousData[name] = value;
            return(value);
        }
コード例 #6
0
        public static TRow[] ReadRowArray <TRow>(TypedRow rowScope, ReadingStreamer streamer, string name) where TRow : TypedRow, new()
        {
            var len = Reader.ReadArrayLength(streamer);
            var arr = new TRow[len];

            for (var i = 0; i < len; i++)
            {
                var has = streamer.ReadBool();
                if (!has)
                {
                    continue;
                }
                var vrow = new TRow();
                if (Reader.TryReadRow(rowScope, vrow, streamer, name + '_' + i.ToString()))
                {
                    arr[i] = vrow;
                }
            }
            return(arr);
        }
コード例 #7
0
        public static bool TryDeserialize(TypedRow row, ReadingStreamer streamer, bool header = true)
        {
            ITypeSerializationCore core;
            var tRow = row.GetType();

            if (!s_Serializers.TryGetValue(tRow, out core))
            {
                return(false);
            }

            //1 Header
            if (header)
            {
                Reader.ReadHeader(streamer);
            }

            //2 Body
            core.Deserialize(row, streamer);

            return(true);
        }
コード例 #8
0
        public static List <TRow> ReadRowList <TRow>(TypedRow rowScope, ReadingStreamer streamer, string name) where TRow : TypedRow, new()
        {
            var len = Reader.ReadArrayLength(streamer);
            var lst = new List <TRow>(len);

            for (var i = 0; i < len; i++)
            {
                var has = streamer.ReadBool();
                if (!has)
                {
                    lst.Add(null);
                    continue;
                }
                var vrow = new TRow();
                if (Reader.TryReadRow(rowScope, vrow, streamer, name + '_' + i.ToString()))
                {
                    lst.Add(vrow);
                }
            }
            return(lst);
        }
コード例 #9
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);
        }
コード例 #10
0
        public static bool TryReadRow(TypedRow rowScope, TypedRow newRow, ReadingStreamer streamer, string name)
        {
            var ok = ArowSerializer.TryDeserialize(newRow, streamer, false);

            if (ok)
            {
                return(true);
            }

            var map = readRowAsMap(streamer);//unconditionaly to advance stream

            var arow = rowScope as IAmorphousData;

            if (arow == null)
            {
                return(false);
            }
            if (!arow.AmorphousDataEnabled)
            {
                return(false);
            }
            arow.AmorphousData[name] = map;
            return(false);
        }
コード例 #11
0
 public RowImplementation(TypedRow row) => _row = row;
コード例 #12
0
 public static void WriteRow(WritingStreamer streamer, ulong name, TypedRow row)
 {
     streamer.Write(name);
     streamer.Write((byte)DataType.Row);
     ArowSerializer.Serialize(row, streamer, false);
 }
コード例 #13
0
ファイル: TestGraphHost.cs プロジェクト: saleyn/agni
 public override byte[] ObjectToNodeBinaryData(string nodeType, TypedRow data)
 {
     return(null);
     //throw new NotImplementedException();
 }
コード例 #14
0
ファイル: GraphHost.cs プロジェクト: saleyn/agni
 /// <summary>
 /// Convert Row Node to binary data
 /// </summary>
 public abstract byte[] ObjectToNodeBinaryData(string nodeType, TypedRow data);