Exemplo n.º 1
0
        ///////////////////////////////////////////////////////////////////////

        public static void SerializeDataTable(BinaryTypesWriter bw, DataTable table)
        {
            Type[] columnTypes = new Type[table.Columns.Count];

            //write table name
            bw.Write(table.TableName);

            //write columns count
            bw.Write7BitInt(table.Columns.Count);

            for (int i = 0; i < columnTypes.Length; i++)
            {
                //write column name and type
                bw.Write(table.Columns[i].ColumnName);
                bw.Write(table.Columns[i].DataType.FullName);

                columnTypes[i] = table.Columns[i].DataType;
            }

            //write rows count
            bw.Write7BitInt(table.Rows.Count);

            foreach (DataRow row in table.Rows)
            {
                for (int i = 0; i < columnTypes.Length; i++)
                {
                    if (row.IsNull(i))
                    {
                        bw.Write("");
                        continue;
                    }

                    if (columnTypes[i] == typeof(System.String))
                    {
                        bw.Write((string)row[i]);
                    }
                    else if (columnTypes[i] == typeof(System.Int32))
                    {
                        bw.Write7BitInt((int)row[i]);
                    }
                    else if (columnTypes[i] == typeof(System.Int64))
                    {
                        bw.Write7BitLong((long)row[i]);
                    }
                    else if (columnTypes[i] == typeof(System.Decimal))
                    {
                        bw.WriteCompactDecimal((decimal)row[i]);
                    }
                    else if (columnTypes[i] == typeof(System.DateTime))
                    {
                        bw.WriteCompactDateTime((DateTime)row[i], TimeSpan.TicksPerMillisecond * 100);
                    }
                    else if (columnTypes[i] == typeof(bool))
                    {
                        bw.Write((bool)row[i]);
                    }
                }
            }
        }
Exemplo n.º 2
0
        ///////////////////////////////////////////////////////////////////////

        public static void SerializeList <T>(BinaryTypesWriter bw, List <T> list, WriteDataDelegate <T> itemWriter, object objParam)
        {
            if (list != null)
            {
                bw.Write7BitInt(list.Count);
                foreach (T item in list)
                {
                    itemWriter(bw, item, objParam);
                }
            }
            else
            {
                bw.Write7BitInt((Int32)0);
            }
        }
Exemplo n.º 3
0
        ///////////////////////////////////////////////////////////////////////

        public static void SerializeDictionary <K, V>(
            BinaryTypesWriter bw,
            IDictionary <K, V> map,
            WriteDataDelegate <K> keyWriter,
            object keyObjParam,
            WriteDataDelegate <V> ValWriter,
            object valObjParam)
        {
            bw.Write7BitInt(map.Count);
            foreach (KeyValuePair <K, V> keyValue in map)
            {
                keyWriter(bw, keyValue.Key, keyObjParam);
                ValWriter(bw, keyValue.Value, valObjParam);
            }
        }
Exemplo n.º 4
0
 public static void WriteInt(BinaryTypesWriter bw, int val, object objParam)
 {
     bw.Write7BitInt(val);
 }