public IAdaptingType read( FlashorbBinaryReader reader, ParseContext parseContext ) { int refId = reader.ReadVarInteger(); if( (refId & 0x1) == 0 ) return (DateType) parseContext.getReference( refId >> 1 ); double dateTime = reader.ReadDouble(); DateTime sent = new DateTime( 1970, 1, 1, 0, 0, 0, DateTimeKind.Utc ); try { sent = sent.AddMilliseconds(dateTime).ToLocalTime(); } catch(Exception e) { if (Log.isLogging(LoggingConstants.EXCEPTION)) Log.log(LoggingConstants.EXCEPTION, e); sent = DateTime.MinValue; } DateType dateType = new DateType( sent ); parseContext.addReference( dateType ); return dateType; }
public IAdaptingType read( FlashorbBinaryReader reader, ParseContext parseContext ) { int refId = reader.ReadVarInteger(); if( (refId & 0x1) == 0 ) return parseContext.getReference( refId >> 1 ); int arraySize = refId >> 1; IAdaptingType adaptingType = null; object container = null; while( true ) { string str = ReaderUtils.readString( reader, parseContext ); if( str == null || str.Length == 0 ) break; if( container == null ) { container = new Dictionary<object, object>(); adaptingType = new AnonymousObject( (IDictionary) container ); parseContext.addReference( adaptingType ); } object obj = RequestParser.readData( reader, parseContext ); ((IDictionary) container)[ str ] = obj; } if( adaptingType == null ) { container = new object[ arraySize ]; adaptingType = new ArrayType( (object[]) container ); parseContext.addReference( adaptingType ); for( int i = 0; i < arraySize; i++ ) ((object[]) container)[ i ] = RequestParser.readData( reader, parseContext ); } else { for( int i = 0; i < arraySize; i++ ) { object obj = RequestParser.readData( reader, parseContext ); ((IDictionary) container)[ i.ToString() ] = obj; } } return adaptingType; }
public static string readString( FlashorbBinaryReader reader, ParseContext parseContext ) { int len = reader.ReadVarInteger(); if( (len & 0x1) == 0 ) return (string) parseContext.getStringReference( len >> 1 ); string str = reader.ReadUTF( len >> 1 ); if( str.Length == 0 ) return str; parseContext.addStringReference( str ); return str; }
public IAdaptingType read( FlashorbBinaryReader reader, ParseContext parseContext ) { int refId = reader.ReadVarInteger(); if( (refId & 0x1) == 0 ) return (ArrayType) parseContext.getReference( refId >> 1 ); byte[] bytes = reader.ReadBytes( refId >> 1 ); IAdaptingType[] objArray = new IAdaptingType[bytes.Length]; for (int i = 0; i < bytes.Length; i++) objArray[i] = new NumberObject( bytes[i] ); ArrayType arrayType = new ArrayType( objArray ); parseContext.addReference( arrayType ); return arrayType; }
public Weborb.Types.IAdaptingType read( FlashorbBinaryReader reader, ParseContext parseContext ) { return new NumberObject( (reader.ReadVarInteger() << 3) >> 3 ); }
public IAdaptingType read( FlashorbBinaryReader reader, ParseContext parseContext ) { int refId = reader.ReadVarInteger(); if( (refId & 0x1) == 0 ) return (IAdaptingType) parseContext.getReference( refId >> 1 ); ClassInfo classInfo = getClassInfo( refId, reader, parseContext ); Type mappedType = null; if ( !string.IsNullOrEmpty( classInfo.className ) ) mappedType = Types.Types.getServerTypeForClientClass( classInfo.className ); if ( classInfo.externalizable || typeof( IExternalizable ).IsAssignableFrom( mappedType ) ) { Type type = Types.Types.getServerTypeForClientClass( classInfo.className ); object extobj = null; if( type != null ) extobj = ObjectFactories.CreateServiceObject( type ); else extobj = ObjectFactories.CreateServiceObject( classInfo.className ); if( !(extobj is IExternalizable) ) { throw new Exception( "object must implement IExternalizable" ); } else { CacheableAdaptingTypeWrapper wrapper = new CacheableAdaptingTypeWrapper(); parseContext.addReference( wrapper ); IAdaptingType returnValue = null; extobj = ((IExternalizable)extobj).readExternal( reader, parseContext ); if( extobj is IAdaptingType ) returnValue = (IAdaptingType) extobj; else returnValue = new ConcreteObject( extobj ); wrapper.setType( returnValue ); return returnValue; } } else { Dictionary<String, IAdaptingType> props = new Dictionary<String, IAdaptingType>(); AnonymousObject anonObj = new AnonymousObject(); IAdaptingType returnValue = anonObj; if( classInfo.className != null && classInfo.className.Length > 0 ) returnValue = new NamedObject( classInfo.className, anonObj ); parseContext.addReference( returnValue ); int propCount = classInfo.getPropertyCount(); for( int i = 0; i < propCount; i++ ) { if( Log.isLogging( LoggingConstants.DEBUG ) ) Log.log( LoggingConstants.DEBUG, "reading object property " + classInfo.getProperty( i ) ); props[ classInfo.getProperty( i ) ] = RequestParser.readData( reader, parseContext ); } if( classInfo.looseProps ) while( true ) { string propName = ReaderUtils.readString( reader, parseContext ); if( propName == null || propName.Length == 0 ) break; props[ propName ] = RequestParser.readData( reader, parseContext ); } anonObj.Properties = props; return returnValue; } }