public IAdaptingType read( FlashorbBinaryReader reader, ParseContext parseContext ) { double dateTime = reader.ReadDouble(); // ignore the stupid timezone reader.ReadUnsignedShort(); DateTime sent = new DateTime( 1970, 1, 1 ); #if (FULL_BUILD || PURE_CLIENT_LIB ) // get the offset of the time zone the server is in double localTimezoneOffset = TimeZone.CurrentTimeZone.GetUtcOffset( sent ).TotalMilliseconds; // convert 1/1/1970 12AM to UTC sent = TimeZone.CurrentTimeZone.ToUniversalTime( sent ); #else double localTimezoneOffset = TimeZoneInfo.Local.GetUtcOffset( sent ).TotalMilliseconds; sent = TimeZoneInfo.ConvertTime( sent, TimeZoneInfo.Utc ); #endif // bring it back to 12AM sent = sent.AddMilliseconds( localTimezoneOffset ); // now that the sent object is in UTC and it represents 1/1/1970 12AM // convert it to the time sent by the client. The result of the operation // is going to be client's datetime object in UTC sent = sent.AddMilliseconds( dateTime ); return new DateType( sent ); }
public IAdaptingType read( FlashorbBinaryReader reader, ParseContext parseContext ) { int pointer = reader.ReadUnsignedShort(); return parseContext.getReference( pointer ); }
public Request readMessage(Stream input) { FlashorbBinaryReader reader = new FlashorbBinaryReader(input); try { if (Log.isLogging(LoggingConstants.DEBUG)) Log.log(LoggingConstants.DEBUG, "MessageReader:: parsing stream"); int version = reader.ReadUnsignedShort(); int totalHeaders = reader.ReadUnsignedShort(); if (Log.isLogging(LoggingConstants.DEBUG)) Log.log(LoggingConstants.DEBUG, "MessageReader:: parsing message - version: " + version + " totalHeaders: " + totalHeaders); Header[] headers = new Header[totalHeaders]; for (int i = 0; i < totalHeaders; i++) headers[i] = readHeader(reader); int totalBodyParts = reader.ReadUnsignedShort(); if (Log.isLogging(LoggingConstants.DEBUG)) Log.log(LoggingConstants.DEBUG, "MessageReader:: Total body parts: " + totalBodyParts); Body[] bodies = new Body[totalBodyParts]; for (int i = 0; i < totalBodyParts; i++) bodies[i] = readBodyPart(reader); if (Log.isLogging(LoggingConstants.DEBUG)) Log.log(LoggingConstants.DEBUG, "MessageReader:: returning AMFMessage"); Request request = new Request(version, headers, bodies); request.SetFormatter(version == 3 ? (IProtocolFormatter)new AmfV3Formatter() : (IProtocolFormatter)new AmfFormatter()); return request; } catch (Exception exception) { if (Log.isLogging(LoggingConstants.EXCEPTION)) Log.log(LoggingConstants.EXCEPTION, "Exception: " + exception.Message + " StackTrace: " + exception.StackTrace); return null; } }
private Body readBodyPart(FlashorbBinaryReader reader) { int serviceURILength = reader.ReadUnsignedShort(); #if (FULL_BUILD) string serviceURI = encoding.GetString(reader.ReadBytes(serviceURILength)); #else string serviceURI = BitConverter.ToString( reader.ReadBytes( serviceURILength ) ); #endif int responseURILength = reader.ReadUnsignedShort(); #if (FULL_BUILD) string responseURI = encoding.GetString(reader.ReadBytes(responseURILength)); #else string responseURI = BitConverter.ToString( reader.ReadBytes( responseURILength ) ); #endif int length = reader.ReadInteger(); if (Log.isLogging(LoggingConstants.DEBUG)) Log.log(LoggingConstants.DEBUG, "MessageReader::readBodyPart: serviceURI - " + serviceURI + " responseURI - " + responseURI + " length: " + length); return new Body(serviceURI, responseURI, length, readData(reader)); }
private Header readHeader(FlashorbBinaryReader reader) { int nameLength = reader.ReadUnsignedShort(); byte[] bytes = reader.ReadBytes(nameLength); #if (FULL_BUILD) string headerName = encoding.GetString(bytes); #else string headerName = BitConverter.ToString( bytes ); #endif bool mustUnderstand = reader.ReadBoolean(); //int length = reader.ReadInt32(); int length = reader.ReadInteger(); if (Log.isLogging(LoggingConstants.DEBUG)) Log.log(LoggingConstants.DEBUG, "MessageReader::readHeader: name - " + headerName + " mustUnderstand - " + mustUnderstand + " length - " + length); return new Header(headerName, mustUnderstand, length, readData(reader)); }