private Type DeserializeDictionaryType(StreamBuffer reader, out byte keyTypeCode, out byte valTypeCode) { keyTypeCode = reader.ReadByte(); valTypeCode = reader.ReadByte(); GpType gpType = (GpType)keyTypeCode; GpType gpType2 = (GpType)valTypeCode; Type type = (gpType != 0) ? this.GetTypeOfCode(keyTypeCode) : typeof(object); Type type2 = (gpType2 != 0) ? this.GetTypeOfCode(valTypeCode) : typeof(object); return(typeof(Dictionary <,>).MakeGenericType(type, type2)); }
private Dictionary <byte, object> DeserializeParameterTable(StreamBuffer stream) { short num = this.DeserializeShort(stream); Dictionary <byte, object> dictionary = new Dictionary <byte, object>(num); for (int i = 0; i < num; i++) { byte key = stream.ReadByte(); object obj2 = dictionary[key] = this.Deserialize(stream, stream.ReadByte()); } return(dictionary); }
private ExitGames.Client.Photon.Hashtable DeserializeHashTable(StreamBuffer din) { int num = this.DeserializeShort(din); ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(num); for (int i = 0; i < num; i++) { object key = this.Deserialize(din, din.ReadByte()); object obj2 = hashtable[key] = this.Deserialize(din, din.ReadByte()); } return(hashtable); }
private bool DeserializeDictionaryArray(StreamBuffer din, short size, out Array arrayResult) { byte b = default(byte); byte b2 = default(byte); Type type = this.DeserializeDictionaryType(din, out b, out b2); arrayResult = Array.CreateInstance(type, size); for (short num = 0; num < size; num = (short)(num + 1)) { IDictionary dictionary = Activator.CreateInstance(type) as IDictionary; if (dictionary == null) { return(false); } short num2 = this.DeserializeShort(din); for (int i = 0; i < num2; i++) { object key; if (b != 0) { key = this.Deserialize(din, b); } else { byte type2 = din.ReadByte(); key = this.Deserialize(din, type2); } object value; if (b2 != 0) { value = this.Deserialize(din, b2); } else { byte type3 = din.ReadByte(); value = this.Deserialize(din, type3); } dictionary.Add(key, value); } arrayResult.SetValue(dictionary, num); } return(true); }
private IDictionary DeserializeDictionary(StreamBuffer din) { byte b = din.ReadByte(); byte b2 = din.ReadByte(); int num = this.DeserializeShort(din); bool flag = b == 0 || b == 42; bool flag2 = b2 == 0 || b2 == 42; Type typeOfCode = this.GetTypeOfCode(b); Type typeOfCode2 = this.GetTypeOfCode(b2); Type type = typeof(Dictionary <,>).MakeGenericType(typeOfCode, typeOfCode2); IDictionary dictionary = Activator.CreateInstance(type) as IDictionary; for (int i = 0; i < num; i++) { object key = this.Deserialize(din, flag ? din.ReadByte() : b); object value = this.Deserialize(din, flag2 ? din.ReadByte() : b2); dictionary.Add(key, value); } return(dictionary); }
private object[] DeserializeObjectArray(StreamBuffer din) { short num = this.DeserializeShort(din); object[] array = new object[num]; for (int i = 0; i < num; i++) { byte type = din.ReadByte(); array[i] = this.Deserialize(din, type); } return(array); }
private bool DeserializeBoolean(StreamBuffer din) { return(din.ReadByte() != 0); }
public override byte DeserializeByte(StreamBuffer din) { return(din.ReadByte()); }
public override object Deserialize(StreamBuffer din, byte type) { switch (type) { case 105: return(this.DeserializeInteger(din)); case 115: return(this.DeserializeString(din)); case 97: return(this.DeserializeStringArray(din)); case 120: return(this.DeserializeByteArray(din, -1)); case 110: return(this.DeserializeIntArray(din, -1)); case 104: return(this.DeserializeHashTable(din)); case 68: return(this.DeserializeDictionary(din)); case 111: return(this.DeserializeBoolean(din)); case 107: return(this.DeserializeShort(din)); case 108: return(this.DeserializeLong(din)); case 98: return(this.DeserializeByte(din)); case 102: return(this.DeserializeFloat(din)); case 100: return(this.DeserializeDouble(din)); case 121: return(this.DeserializeArray(din)); case 99: { byte customTypeCode = din.ReadByte(); return(this.DeserializeCustom(din, customTypeCode)); } case 122: return(this.DeserializeObjectArray(din)); case 101: return(this.DeserializeEventData(din, null)); case 113: return(this.DeserializeOperationRequest(din)); case 112: return(this.DeserializeOperationResponse(din)); case 0: case 42: return(null); default: throw new Exception("Deserialize(): " + type + " pos: " + din.Position + " bytes: " + din.Length + ". " + SupportClass.ByteArrayToString(din.GetBuffer())); } }
private Array DeserializeArray(StreamBuffer din) { short num = this.DeserializeShort(din); byte b = din.ReadByte(); Array array = null; switch (b) { case 121: { Array array3 = this.DeserializeArray(din); Type type = array3.GetType(); array = Array.CreateInstance(type, num); array.SetValue(array3, 0); for (short num4 = 1; num4 < num; num4 = (short)(num4 + 1)) { array3 = this.DeserializeArray(din); array.SetValue(array3, num4); } goto IL_0226; } case 120: array = Array.CreateInstance(typeof(byte[]), num); for (short num5 = 0; num5 < num; num5 = (short)(num5 + 1)) { Array value = this.DeserializeByteArray(din, -1); array.SetValue(value, num5); } goto IL_0226; case 98: array = this.DeserializeByteArray(din, num); goto IL_0226; case 105: array = this.DeserializeIntArray(din, num); goto IL_0226; case 99: { byte b2 = din.ReadByte(); CustomType customType = default(CustomType); if (Protocol.CodeDict.TryGetValue(b2, out customType)) { array = Array.CreateInstance(customType.Type, num); for (int i = 0; i < num; i++) { short num3 = this.DeserializeShort(din); if (customType.DeserializeStreamFunction == null) { byte[] array2 = new byte[num3]; din.Read(array2, 0, num3); array.SetValue(customType.DeserializeFunction(array2), i); } else { array.SetValue(customType.DeserializeStreamFunction(din, num3), i); } } goto IL_0226; } throw new Exception("Cannot find deserializer for custom type: " + b2); } case 68: { Array result = null; this.DeserializeDictionaryArray(din, num, out result); return(result); } default: { array = this.CreateArrayByType(b, num); for (short num2 = 0; num2 < num; num2 = (short)(num2 + 1)) { array.SetValue(this.Deserialize(din, b), num2); } goto IL_0226; } IL_0226: return(array); } }