private IAWArray DecodeSFSArray(ByteArray buffer) { IAWArray iSFSArray = AWArray.NewInstance(); AWDataType sFSDataType = (AWDataType)Convert.ToInt32(buffer.ReadByte()); if (sFSDataType != AWDataType.SFS_ARRAY) { throw new AWCodecError(string.Concat(new object[] { "Invalid AWDataType. Expected: ", AWDataType.SFS_ARRAY, ", found: ", sFSDataType })); } int num = (int)buffer.ReadShort(); if (num < 0) { throw new AWCodecError("Can't decode AWArray. Size is negative: " + num); } try { for (int i = 0; i < num; i++) { AWDataWrapper sFSDataWrapper = this.DecodeObject(buffer); if (sFSDataWrapper == null) { throw new AWCodecError("Could not decode AWArray item at index: " + i); } iSFSArray.Add(sFSDataWrapper); } } catch (AWCodecError sFSCodecError) { throw sFSCodecError; } return(iSFSArray); }
private void AddObject(object val, AWDataType tp) { this.Add(new AWDataWrapper((int)tp, val)); }
private AWDataWrapper DecodeObject(ByteArray buffer) { AWDataType sFSDataType = (AWDataType)Convert.ToInt32(buffer.ReadByte()); AWDataWrapper result; if (sFSDataType == AWDataType.NULL) { result = this.BinDecode_NULL(buffer); } else { if (sFSDataType == AWDataType.BOOL) { result = this.BinDecode_BOOL(buffer); } else { if (sFSDataType == AWDataType.BOOL_ARRAY) { result = this.BinDecode_BOOL_ARRAY(buffer); } else { if (sFSDataType == AWDataType.BYTE) { result = this.BinDecode_BYTE(buffer); } else { if (sFSDataType == AWDataType.BYTE_ARRAY) { result = this.BinDecode_BYTE_ARRAY(buffer); } else { if (sFSDataType == AWDataType.SHORT) { result = this.BinDecode_SHORT(buffer); } else { if (sFSDataType == AWDataType.SHORT_ARRAY) { result = this.BinDecode_SHORT_ARRAY(buffer); } else { if (sFSDataType == AWDataType.INT) { result = this.BinDecode_INT(buffer); } else { if (sFSDataType == AWDataType.INT_ARRAY) { result = this.BinDecode_INT_ARRAY(buffer); } else { if (sFSDataType == AWDataType.LONG) { result = this.BinDecode_LONG(buffer); } else { if (sFSDataType == AWDataType.LONG_ARRAY) { result = this.BinDecode_LONG_ARRAY(buffer); } else { if (sFSDataType == AWDataType.FLOAT) { result = this.BinDecode_FLOAT(buffer); } else { if (sFSDataType == AWDataType.FLOAT_ARRAY) { result = this.BinDecode_FLOAT_ARRAY(buffer); } else { if (sFSDataType == AWDataType.DOUBLE) { result = this.BinDecode_DOUBLE(buffer); } else { if (sFSDataType == AWDataType.DOUBLE_ARRAY) { result = this.BinDecode_DOUBLE_ARRAY(buffer); } else { if (sFSDataType == AWDataType.UTF_STRING) { result = this.BinDecode_UTF_STRING(buffer); } else { if (sFSDataType == AWDataType.UTF_STRING_ARRAY) { result = this.BinDecode_UTF_STRING_ARRAY(buffer); } else { if (sFSDataType == AWDataType.SFS_ARRAY) { buffer.Position--; result = new AWDataWrapper(17, this.DecodeSFSArray(buffer)); } else { if (sFSDataType != AWDataType.SFS_OBJECT) { throw new Exception("Unknow AWDataType ID: " + sFSDataType); } buffer.Position--; IAWObject iSFSObject = this.DecodeSFSObject(buffer); byte type = Convert.ToByte(18); object data = iSFSObject; if (iSFSObject.ContainsKey(DefaultAWDataSerializer.CLASS_MARKER_KEY) && iSFSObject.ContainsKey(DefaultAWDataSerializer.CLASS_FIELDS_KEY)) { type = Convert.ToByte(19); data = this.Sfs2Cs(iSFSObject); } result = new AWDataWrapper((int)type, data); } } } } } } } } } } } } } } } } } } return(result); }
public AWDataWrapper(AWDataType tp, object data) { this.type = (int)tp; this.data = data; }
public void WriteByte(AWDataType tp) { this.WriteByte(Convert.ToByte((int)tp)); }