Esempio n. 1
0
 public static void WriteGResult(this ObjectWriter writer, Result value, Type type)
 {
     writer.WriteTag(FormatterTag.GResult);
     writer.InnerWrite(value._Status);
     writer.WriteStringOrReference(value._Message);
     writer.InnerWrite(type.GetGenericArguments()[0]);
     writer.Serialize(value.GetValue());
 }
Esempio n. 2
0
        private static void WriteSimpleArray(this ObjectWriter writer, Array value)
        {
            writer.WriteTag(FormatterTag.Array);

            var elementType = value.GetType().GetElementType();

            writer.InnerWrite(elementType);
            writer.InnerWrite(value);
        }
Esempio n. 3
0
 public static void WriteTypeArray(this ObjectWriter writer, Type[] value)
 {
     writer.WriteTag(FormatterTag.TypeArray);
     writer.InnerWrite(value.Length);
     foreach (var v in value)
     {
         writer.InnerWrite(v);
     }
 }
Esempio n. 4
0
 public static void WriteDecimalArray(this ObjectWriter writer, Decimal[] value)
 {
     writer.WriteTag(FormatterTag.DecimalArray);
     writer.InnerWrite(value.Length);
     foreach (var item in value)
     {
         writer.InnerWrite(item);
     }
 }
Esempio n. 5
0
        public static void WriteGList(this ObjectWriter writer, IList value, Type type)
        {
            writer.WriteTag(FormatterTag.GList);

            writer.InnerWrite(type.GetGenericArguments()[0]);
            writer.InnerWrite(value.Count);

            foreach (var item in value)
            {
                writer.Serialize(item);
            }
        }
Esempio n. 6
0
        private static void WriteGDictionary(ObjectWriter writer, FormatterTag tag, IDictionary value, Type type)
        {
            writer.WriteTag(tag);
            var genericArguments = type.GetGenericArguments();

            writer.InnerWrite(genericArguments[0]);
            writer.InnerWrite(genericArguments[1]);
            writer.InnerWrite(value.Count);

            foreach (DictionaryEntry item in value)
            {
                writer.Serialize(item.Key);
                writer.Serialize(item.Value);
            }
        }
Esempio n. 7
0
        private static void WriteMultiRankArray(this ObjectWriter writer, Array value)
        {
            writer.WriteTag(FormatterTag.MultiRankArray);

            var elementType = value.GetType().GetElementType();

            writer.InnerWrite(elementType);

            int rank = value.Rank;

            //- 写入维数
            writer.InnerWrite(rank);

            int i, j;

            int[,] des = new int[rank, 2];
            int[] loc = new int[rank];
            //- 写入维数长度
            for (i = 0; i < rank; i++)
            {
                writer.InnerWrite(value.GetLength(i));
            }

            //- 写入元素
            //- 设置每一个 数组维 的上下标。
            for (i = 0; i < rank; i++)
            {
                j         = value.GetLowerBound(i); //- 上标
                des[i, 0] = j;
                des[i, 1] = value.GetUpperBound(i); //- 下标
                loc[i]    = j;
            }
            i = rank - 1;
            while (loc[0] <= des[0, 1])
            {
                writer.Serialize(value.GetValue(loc));
                loc[i]++;
                for (j = rank - 1; j > 0; j--)
                {
                    if (loc[j] > des[j, 1])
                    {
                        loc[j] = des[j, 0];
                        loc[j - 1]++;
                    }
                }
            }
        }
Esempio n. 8
0
        //static readonly System.Collections.Concurrent.ConcurrentDictionary<Type, ICustomSerializable>
        //    CustomSerializables = new System.Collections.Concurrent.ConcurrentDictionary<Type, ICustomSerializable>();
        public static void WriteCustom(this ObjectWriter writer, object value, Type formatterType)
        {
            var customFormatter = Activator.CreateInstance(formatterType, true) as ICustomSerializable;

            writer.WriteTag(FormatterTag.Custom);
            writer.InnerWrite(formatterType);
            customFormatter.Serialize(writer, value);
        }
Esempio n. 9
0
        public static void WriteCharArray(this ObjectWriter writer, Char[] value)
        {
            writer.WriteTag(FormatterTag.CharArray);
            var bytes = writer.Encoding.GetBytes(value);

            writer.InnerWrite(bytes.Length);
            writer.Stream.WriteBytes(bytes);
        }
Esempio n. 10
0
 public static void InnerWrite(this ObjectWriter writer, Array array)
 {
     writer.InnerWrite(array.Length);
     foreach (var item in array)
     {
         writer.Serialize(item);
     }
 }
Esempio n. 11
0
 public static void WriteBooleanArray(this ObjectWriter writer, Boolean[] value)
 {
     writer.WriteTag(FormatterTag.BooleanArray);
     writer.InnerWrite(value.Length);
     foreach (var v in value)
     {
         writer.Stream.WriteByte((v ? (byte)1 : (byte)0));
     }
 }
Esempio n. 12
0
 public static void WriteGuidArray(this ObjectWriter writer, Guid[] value)
 {
     writer.WriteTag(FormatterTag.GuidArray);
     writer.InnerWrite(value.Length);
     foreach (var v in value)
     {
         writer.Stream.WriteBytes(v.ToByteArray());
     }
 }
Esempio n. 13
0
 public static void WriteStringArray(this ObjectWriter writer, String[] value)
 {
     writer.WriteTag(FormatterTag.StringArray);
     writer.InnerWrite(value.Length);
     foreach (var item in value)
     {
         writer.WriteStringOrReference(item);
     }
 }
Esempio n. 14
0
 public static void WriteString(this ObjectWriter writer, String value)
 {
     writer.WriteTag(FormatterTag.String);
     if (value == null)
     {
         writer.InnerWrite(-1);
     }
     else if (value.Length == 0)
     {
         writer.InnerWrite(0);
     }
     else
     {
         var bytes = writer.Encoding.GetBytes(value);
         writer.InnerWrite(bytes.Length);
         writer.Stream.WriteBytes(bytes);
     }
 }
Esempio n. 15
0
 public static void WriteSByteArray(this ObjectWriter writer, SByte[] value)
 {
     writer.WriteTag(FormatterTag.SByteArray);
     writer.InnerWrite(value.Length);
     foreach (var item in value)
     {
         writer.Stream.WriteByte((Byte)item);
     }
 }
Esempio n. 16
0
 public static void WriteDoubleArray(this ObjectWriter writer, Double[] value)
 {
     writer.WriteTag(FormatterTag.DoubleArray);
     writer.InnerWrite(value.Length);
     foreach (var item in value)
     {
         writer.Stream.WriteBytes(BitConverter.GetBytes(item));
     }
 }
 public void Serialize(ObjectWriter writer, object value)
 {
     var items = value as SessionStateItemCollection;
     writer.InnerWrite(items.Count);
     foreach(string name in items.Keys)
     {
         writer.Serialize(name);
         writer.Serialize(items[name]);
     }
 }
Esempio n. 18
0
 public static void WriteByteArray(this ObjectWriter writer, Byte[] value)
 {
     writer.WriteTag(FormatterTag.ByteArray);
     writer.InnerWrite(value.Length);
     writer.Stream.WriteBytes(value);
     //foreach(var item in value)
     //{
     //    writer.Stream.WriteByte(item);
     //}
 }
Esempio n. 19
0
        public static void WriteTimeSpanArray(this ObjectWriter writer, TimeSpan[] value)
        {
            writer.WriteTag(FormatterTag.TimeSpanArray);
            writer.InnerWrite(value.Length);

            foreach (var v in value)
            {
                writer.Stream.WriteBytes(BitConverter.GetBytes(v.Ticks));
            }
        }
Esempio n. 20
0
        public static void WriteDateTimeArray(this ObjectWriter writer, DateTime[] value)
        {
            writer.WriteTag(FormatterTag.DateTimeArray);
            writer.InnerWrite(value.Length);

            foreach (var v in value)
            {
                writer.Stream.WriteBytes(BitConverter.GetBytes(v.ToBinary()));
            }
        }
Esempio n. 21
0
        public static void InnerWriteObject(this ObjectWriter writer, object value, Type type, FormatterTag tagType)
        {
            writer.WriteTag(tagType);
            writer.InnerWrite(type);
            SerializableFieldInfo[] fields = SerializationHelper.GetSerializableMembers(type);

            foreach (var field in fields)
            {
                writer.Serialize(field.GetValue(value), field.Field);
            }
        }
Esempio n. 22
0
        public static void WriteHybridDictionary(this ObjectWriter writer, HybridDictionary value)
        {
            writer.WriteTag(FormatterTag.HybridDictionary);
            writer.InnerWrite(value.Count);
            var caseInsensitive = (bool)GetCaseInsensitive(value);

            writer.Stream.WriteByte((caseInsensitive ? (byte)1 : (byte)0));

            foreach (DictionaryEntry item in value)
            {
                writer.Serialize(item.Key);
                writer.Serialize(item.Value);
            }
        }
Esempio n. 23
0
 public static void WriteStringBuilderArray(this ObjectWriter writer, StringBuilder[] value)
 {
     writer.WriteTag(FormatterTag.StringBuilderArray);
     writer.InnerWrite(value.Length);
     foreach (var v in value)
     {
         if (v == null)
         {
             writer.WriteNull();
         }
         else
         {
             writer.WriteStringOrReference(v.ToString());
         }
     }
 }
Esempio n. 24
0
        public static bool TryWriteReference(this ObjectWriter writer, object value)
        {
            if (value == null)
            {
                return(false);
            }
            var index = writer.ReferenceContainer.IndexOf(value);

            if (index < 0)
            {
                writer.ReferenceContainer.Add(value);
                return(false);
            }
            writer.WriteTag(FormatterTag.Reference);
            writer.InnerWrite(index);
            return(true);
        }
Esempio n. 25
0
 public static void WriteChar(this ObjectWriter writer, Char value)
 {
     writer.InnerWrite(FormatterTag.Char, BitConverter.GetBytes(value));
 }
Esempio n. 26
0
 public static void WriteGuid(this ObjectWriter writer, Guid value)
 {
     writer.InnerWrite(FormatterTag.Guid, value.ToByteArray());
 }
Esempio n. 27
0
 public static void WriteType(this ObjectWriter writer, Type value)
 {
     writer.WriteTag(FormatterTag.Type);
     writer.InnerWrite(value);
 }
Esempio n. 28
0
 public static void WriteInt32(this ObjectWriter writer, Int32 value)
 {
     writer.WriteTag(FormatterTag.Int32);
     writer.InnerWrite(value);
 }
Esempio n. 29
0
 public static void WriteTimeSpan(this ObjectWriter writer, TimeSpan value)
 {
     writer.InnerWrite(FormatterTag.TimeSpan, BitConverter.GetBytes(value.Ticks));
 }
Esempio n. 30
0
 public static void WriteDateTime(this ObjectWriter writer, DateTime value)
 {
     writer.InnerWrite(FormatterTag.DateTime, BitConverter.GetBytes(value.ToBinary()));
 }
Esempio n. 31
0
 public static void WriteDecimal(this ObjectWriter writer, Decimal value)
 {
     writer.WriteTag(FormatterTag.Decimal);
     writer.InnerWrite(value);
 }
Esempio n. 32
0
        private static void WriteGDictionary(ObjectWriter writer, FormatterTag tag, IDictionary value, Type type)
        {
            writer.WriteTag(tag);
            var genericArguments = type.GetGenericArguments();
            writer.InnerWrite(genericArguments[0]);
            writer.InnerWrite(genericArguments[1]);
            writer.InnerWrite(value.Count);

            foreach(DictionaryEntry item in value)
            {
                writer.Serialize(item.Key);
                writer.Serialize(item.Value);
            }
        }