public object ReadData(AMFReader reader, ClassDefinition classDefinition) { ASObject aso = new ASObject(_typeIdentifier); reader.AddAMF3ObjectReference(aso); string key = reader.ReadAMF3String(); aso.TypeName = _typeIdentifier; while (key != string.Empty) { object value = reader.ReadAMF3Data(); aso.Add(key, value); key = reader.ReadAMF3String(); } return aso; }
public object ReadData(AMFReader reader, ClassDefinition classDefinition) { ASObject aso = new ASObject(_typeIdentifier); reader.AddAMF3ObjectReference(aso); string key = reader.ReadAMF3String(); aso.TypeName = _typeIdentifier; while (key != string.Empty) { object value = reader.ReadAMF3Data(); aso.Add(key, value); key = reader.ReadAMF3String(); } return(aso); }
public object ReadData(AMFReader reader, ClassDefinition classDefinition) { ASObject instance = new ASObject(this._typeIdentifier); reader.AddAMF3ObjectReference(instance); string key = reader.ReadAMF3String(); instance.TypeName = this._typeIdentifier; while (key != string.Empty) { object obj3 = reader.ReadAMF3Data(); instance.Add(key, obj3); key = reader.ReadAMF3String(); } return(instance); }
public object ReadData(AMFReader reader, ClassDefinition classDefinition) { var instance = ObjectFactory.CreateInstance(classDefinition.ClassName); if (instance == null) { throw new FluorineException(String.Format(Resources.Type_InitError, classDefinition.ClassName)); } reader.AddAMF3ObjectReference(instance); if (instance is IExternalizable) { var externalizable = instance as IExternalizable; var dataInput = new DataInput(reader); externalizable.ReadExternal(dataInput); return instance; } throw new FluorineException(String.Format(Resources.Externalizable_CastFail, instance.GetType().FullName)); }
public object ReadData(AMFReader reader, ClassDefinition classDefinition) { object instance = ObjectFactory.CreateInstance(classDefinition.ClassName); if (instance == null) { string msg = __Res.GetString(__Res.Type_InitError, classDefinition.ClassName); throw new FluorineException(msg); } reader.AddAMF3ObjectReference(instance); if (instance is IExternalizable) { IExternalizable externalizable = instance as IExternalizable; DataInput dataInput = new DataInput(reader); externalizable.ReadExternal(dataInput); return instance; } else { string msg = __Res.GetString(__Res.Externalizable_CastFail, instance.GetType().FullName); throw new FluorineException(msg); } }
public object ReadData(AMFReader reader, ClassDefinition classDefinition) { var instance = ObjectFactory.CreateInstance(classDefinition.ClassName); if (instance == null) { throw new FluorineException(String.Format(Resources.Type_InitError, classDefinition.ClassName)); } reader.AddAMF3ObjectReference(instance); if (instance is IExternalizable) { var externalizable = instance as IExternalizable; var dataInput = new DataInput(reader); externalizable.ReadExternal(dataInput); return(instance); } throw new FluorineException(String.Format(Resources.Externalizable_CastFail, instance.GetType().FullName)); }
public object ReadData(AMFReader reader, ClassDefinition classDefinition) { object instance = ObjectFactory.CreateInstance(classDefinition.ClassName); if (instance == null) { throw new FluorineException(__Res.GetString("Type_InitError", new object[] { classDefinition.ClassName })); } reader.AddAMF3ObjectReference(instance); if (!(instance is IExternalizable)) { throw new FluorineException(__Res.GetString("Externalizable_CastFail", new object[] { instance.GetType().FullName })); } IExternalizable externalizable = instance as IExternalizable; DataInput input = new DataInput(reader); externalizable.ReadExternal(input); return(instance); }
public object ReadData(AMFReader reader, ClassDefinition classDefinition) { object instance = ObjectFactory.CreateInstance(classDefinition.ClassName); if (instance == null) { string msg = __Res.GetString(__Res.Type_InitError, classDefinition.ClassName); throw new FluorineException(msg); } reader.AddAMF3ObjectReference(instance); if (instance is IExternalizable) { IExternalizable externalizable = instance as IExternalizable; DataInput dataInput = new DataInput(reader); externalizable.ReadExternal(dataInput); return(instance); } else { string msg = __Res.GetString(__Res.Externalizable_CastFail, instance.GetType().FullName, classDefinition.ClassName); throw new FluorineException(msg); } }
public object ReadData(AMFReader reader) { int handle = reader.ReadAMF3IntegerData(); bool inline = ((handle & 1) != 0); handle = handle >> 1; if (!inline) { //An object reference return(reader.ReadAMF3ObjectReference(handle)); } else { ClassDefinition classDefinition = reader.ReadClassDefinition(handle); object instance = null; IReflectionOptimizer reflectionOptimizer = _optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; if (reflectionOptimizer == null) { lock (_optimizedReaders) { if (classDefinition.IsTypedObject) { if (!_optimizedReaders.Contains(classDefinition.ClassName)) { //Temporary reader _optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); Type type = ObjectFactory.Locate(classDefinition.ClassName); if (type != null) { instance = ObjectFactory.CreateInstance(type); if (classDefinition.IsExternalizable) { reflectionOptimizer = new AMF3ExternalizableReader(); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } else { reader.AddAMF3ObjectReference(instance); IBytecodeProvider bytecodeProvider = null; #if NET_1_1 //codedom only if (FluorineConfiguration.Instance.OptimizerSettings != null) { bytecodeProvider = new FluorineFx.IO.Bytecode.CodeDom.BytecodeProvider(); } #else if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "codedom") { bytecodeProvider = new FluorineFx.IO.Bytecode.CodeDom.BytecodeProvider(); } if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "il") { bytecodeProvider = new FluorineFx.IO.Bytecode.Lightweight.BytecodeProvider(); } #endif reflectionOptimizer = bytecodeProvider.GetReflectionOptimizer(type, classDefinition, reader, instance); //Fixup if (reflectionOptimizer != null) { _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; } else { _optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); } } } else { reflectionOptimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } else { reflectionOptimizer = _optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } else { reflectionOptimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } } else { instance = reflectionOptimizer.ReadData(reader, classDefinition); } return(instance); } }
public object ReadData(AMFReader reader) { int handle = reader.ReadAMF3IntegerData(); bool inline = ((handle & 1) != 0); handle = handle >> 1; if (!inline) { //An object reference return reader.ReadAMF3ObjectReference(handle); } else { ClassDefinition classDefinition = reader.ReadClassDefinition(handle); object instance = null; IReflectionOptimizer reflectionOptimizer = _optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; if (reflectionOptimizer == null) { lock (_optimizedReaders) { if (classDefinition.IsTypedObject) { if (!_optimizedReaders.Contains(classDefinition.ClassName)) { //Temporary reader _optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); Type type = ObjectFactory.Locate(classDefinition.ClassName); if (type != null) { instance = ObjectFactory.CreateInstance(type); if (classDefinition.IsExternalizable) { reflectionOptimizer = new AMF3ExternalizableReader(); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } else { reader.AddAMF3ObjectReference(instance); IBytecodeProvider bytecodeProvider = null; #if NET_1_1 //codedom only if( FluorineConfiguration.Instance.OptimizerSettings != null ) bytecodeProvider = new GodLesZ.Library.Amf.IO.Bytecode.CodeDom.BytecodeProvider(); #else if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "codedom") bytecodeProvider = new GodLesZ.Library.Amf.IO.Bytecode.CodeDom.BytecodeProvider(); if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "il") bytecodeProvider = new GodLesZ.Library.Amf.IO.Bytecode.Lightweight.BytecodeProvider(); #endif reflectionOptimizer = bytecodeProvider.GetReflectionOptimizer(type, classDefinition, reader, instance); //Fixup if (reflectionOptimizer != null) _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; else _optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); } } else { reflectionOptimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } else { reflectionOptimizer = _optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } else { reflectionOptimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } } else { instance = reflectionOptimizer.ReadData(reader, classDefinition); } return instance; } }
public object ReadData(AMFReader reader) { int index = reader.ReadAMF3IntegerData(); bool flag = (index & 1) != 0; index = index >> 1; if (!flag) { return(reader.ReadAMF3ObjectReference(index)); } ClassDefinition classDefinition = reader.ReadClassDefinition(index); object instance = null; IReflectionOptimizer optimizer = this._optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; if (optimizer == null) { lock (this._optimizedReaders) { if (classDefinition.IsTypedObject) { if (!this._optimizedReaders.Contains(classDefinition.ClassName)) { this._optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); Type type = ObjectFactory.Locate(classDefinition.ClassName); if (type != null) { instance = ObjectFactory.CreateInstance(type); if (classDefinition.IsExternalizable) { optimizer = new AMF3ExternalizableReader(); this._optimizedReaders[classDefinition.ClassName] = optimizer; instance = optimizer.ReadData(reader, classDefinition); } else { reader.AddAMF3ObjectReference(instance); IBytecodeProvider provider = null; if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "codedom") { provider = new BytecodeProvider(); } if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "il") { provider = new BytecodeProvider(); } optimizer = provider.GetReflectionOptimizer(type, classDefinition, reader, instance); if (optimizer != null) { this._optimizedReaders[classDefinition.ClassName] = optimizer; } else { this._optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); } } return(instance); } optimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); this._optimizedReaders[classDefinition.ClassName] = optimizer; return(optimizer.ReadData(reader, classDefinition)); } optimizer = this._optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; return(optimizer.ReadData(reader, classDefinition)); } optimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); this._optimizedReaders[classDefinition.ClassName] = optimizer; return(optimizer.ReadData(reader, classDefinition)); } } return(optimizer.ReadData(reader, classDefinition)); }
public object ReadData(AMFReader reader) { int handle = reader.ReadAMF3IntegerData(); bool inline = ((handle & 1) != 0); handle = handle >> 1; if (!inline) { //An object reference return(reader.ReadAMF3ObjectReference(handle)); } else { ClassDefinition classDefinition = reader.ReadClassDefinition(handle); object instance = null; IReflectionOptimizer reflectionOptimizer = _optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; if (reflectionOptimizer == null) { lock (_optimizedReaders) { if (classDefinition.IsTypedObject) { if (!_optimizedReaders.Contains(classDefinition.ClassName)) { //Temporary reader _optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); Type type = ObjectFactory.Locate(classDefinition.ClassName); if (type != null) { instance = ObjectFactory.CreateInstance(type); if (classDefinition.IsExternalizable) { reflectionOptimizer = new AMF3ExternalizableReader(); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } else { reader.AddAMF3ObjectReference(instance); //Fixup if (reflectionOptimizer != null) { _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; } else { _optimizedReaders[classDefinition.ClassName] = new AMF3TempObjectReader(); } } } else { reflectionOptimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } else { reflectionOptimizer = _optimizedReaders[classDefinition.ClassName] as IReflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } else { reflectionOptimizer = new AMF3TypedASObjectReader(classDefinition.ClassName); _optimizedReaders[classDefinition.ClassName] = reflectionOptimizer; instance = reflectionOptimizer.ReadData(reader, classDefinition); } } } else { instance = reflectionOptimizer.ReadData(reader, classDefinition); } return(instance); } }